Kompl synthesis

Type: agentic-system-analyses/types/agentic-system-synthesis.md

Bounded synthesis

From selected sources to reusable pages

Kompl is a knowledge compiler and server. It turns files, URLs and pasted text into a retained wiki for people and agents. Application code schedules the work; models extract information, judge ambiguous matches, draft prose and answer questions. It is not an enclosing agent runtime whose model chooses arbitrary tools and next steps. Its public claim of a compounding, self-organizing wiki is broader than the demonstrated result: the inspected implementation wires cross-session accumulation and updates, not demonstrated factual or capability improvement. See RT-RTE-session-compile and EPI-CLM-compiled-knowledge.

The evidence is SRC-1, https://github.com/tuirk/Kompl at commit 17970c969b0c2576bf722840e0e2db3c6416a7aa, with an analysis cutoff of 2026-10-14. The whole-system functional boundary includes the Next.js application, Python NLP/model/storage service, n8n trigger, CLI maintenance, wiki, built-in chat, MCP server and evaluator paths. It excludes upstream provider internals and external agents' scheduling and context decisions. No target code, tests, providers or services were executed. The account therefore establishes source-grounded wiring and affordances, not current-revision operation. Historical provider reports are attributed operation in a narrower evaluation domain. The boundary and evidence and Source register fix those limits.

The representative workflow begins when a caller finalizes included staged sources. The app creates durable progress, passes a session ID through n8n, and runs an in-process background compile. n8n's acknowledgement and the app's started response precede page delivery. The app ingests, extracts, resolves names, matches existing pages, plans, drafts in layers, injects links, commits and bootstraps conventions. Python and model providers receive bounded tasks, not autonomous worker agendas. Extraction and drafting can advance after partial success; reaching completion does not certify that every selected source or planned page succeeded. This is one connected shipped workflow, not a composition inferred from unrelated capabilities. See RT-RTE-session-compile and the workflow account.

Retained extraction, aliases and historical mention counts affect later sessions before or independently of prose approval. Matching selects at most three TF-IDF candidates per source above 0.15, then model triage chooses update, contradiction or skip. Counts can promote entities and concepts into pages, but repeated mentions are not independent corroboration. A skip may attach provenance without changing prose; a contradiction can become an advisory sidebar event rather than a corrective redraft from that branch. Comparison-page planning has additional relationship and threshold conditions. See RT-RTE-plan-draft, MEM-OBJ-mentions and EPI-RTE-triage-disposition.

Each model call receives a selected reconstruction

The retained system is not a persistent shared model conversation. Raw converted markdown and current/previous page prose live in gzip files; SQLite retains extractions, aliases, mentions, plans, outbox prose, chat and activity; Chroma retains vectors and associated metadata/document prefixes. Dense embeddings are derived access representations, not updated embedding-model weights. Restored vectors can have unknown pre-import provenance. See MEM-OBJ-raw, MEM-OBJ-extractions, MEM-OBJ-pages and MEM-OBJ-wiki-pages.

Drafting proceeds from original-source pages through summaries, entities, concepts, comparisons and overviews. Original-source pages copy raw prose without a drafting model. Other calls receive selected dossiers, raw sources, optional old-page text and schema conventions, plus selected earlier-layer summaries. Known titles are capped at 200; dossier ranking/caps differ from the raw-source input list; Python prefix-truncates the assembled prompt. A listed source is consequently not guaranteed to reach the model. Each call resembles a temporary task frame: selected material enters and returned markdown persists. Reloading requires explicit code reads; an ID inside a prompt is not a live reference to external memory. See RT-RTE-plan-draft and memory's annotation on that route.

Admission is neither uniform delivery nor factual acceptance

Ordinary compile admission defaults to automatic approval. Turning it off queues eligible content for review, but provenance-only plans still commit. Compile guards reject missing or undersized generated content, with original-source exceptions; explicit pending-plan approval requires nonempty prose but does not repeat the compile length check. The UI affords human approval and rejection, while an API call alone does not identify a reviewing human. These are operational gates, not recorded evidence-consuming decisions accepting claims for a named factual use. Source attribution and wiki-grounding prompts request fidelity; they do not demonstrate it. See RT-RTE-draft-approval, EPI-CLM-source-attribution and EPI-CLM-wiki-grounding.

A per-page SQLite transaction precedes file flush and separate index effects. The session driver fails on reported pending flush failures; single-plan approval can report success after database commitment despite a flush failure. Existing files take precedence over outbox text in the app reader, while chat reads files without that fallback. An unflushed update can thus expose old prose, and an unflushed new page can be missed by chat. Outbox retry and startup reconciliation wire completion recovery, not a fully atomic database/files/index transaction or observed crash recovery. A first manual-review compile can also fail schema bootstrap for lack of committed pages while preserving its pending drafts. See RT-CLM-durable-completion, MEM-OBJ-pages and the workflow account.

Other shipped writers defeat a universal approval guarantee. Import restores content, settings and optional vectors directly after structural checks. Source deletion can redraft surviving pages without the ordinary approval/thin gates or old-page/schema context; short-source and failure branches can retain prose with a note. Direct storage APIs afford replacement without app-level reconciliation. Source archival suppresses affected default indexes, not proven direct-ID access; pruning dependency IDs does not rewrite surviving draft bodies. These mechanisms change availability or prose without establishing semantic withdrawal. See RT-RTE-archive-import, RT-RTE-source-maintenance, MEM-RTE-storage-write and MEM-RTE-withdrawal-cleanup.

Reading and feedback have different completion boundaries

Wiki and MCP consumers request retained prose and provenance without an answering model. The external MCP client decides what to request and how to use the returned text. Built-in chat instead uses model selection for a small index or hybrid lexical/vector ranking for a larger one, with popular-page fallback. It supplies at most ten readable pages, clipping the first five to 2000 characters each and the rest to 300-character prefixes. Stored conversation replay selects earliest ascending rows, limits to eleven and drops the last selected row, rather than selecting a recent tail. Large history can also displace trailing pages or the question under Python's overall prefix cap. Requested page retrieval and automatic old-context augmentation are different operations; neither guarantees relevant or complete evidence. See RT-RTE-mcp-read, RT-RTE-chat-feedback and MEM-RTE-history-read.

The strongest supported trace-feedback contribution is durable transformation of experience into later-readable artifacts. Saved Links automatically projects unresolved ingestion failures into a wiki page. Chat automatically wraps an answer as a pending FAQ when at least three pages were retrieved—not when three citations were verified. A separate caller-selected save bypasses that count trigger. Ordinary FAQ installation is obstructed: retrieved page IDs are stored as source IDs, and approval's source-provenance foreign key rejects disjoint IDs. Coincident source/page IDs and empty-citation manual saves are exceptions, not a repaired ordinary cycle. Thus automatic candidate creation and the failure-trace projection are wired, while ordinary answer-to-wiki compounding is not established end to end. See MEM-RTE-saved-links, MEM-RTE-manual-save and MEM-CLM-chat-provenance.

These contributions do not demonstrate improved capacity for future action. Saved Links even has a code-derived counterexample: dismissing the last failure can produce an assertion that all saved links were imported, although no ingestion occurred. Contradiction diagnostics are also bounded: lint samples up to ten same-category summary pairs, returns advisory findings, and can return an empty conflict list after a failed scan. The historical corpus runner checks response shape/counts rather than source truth; its exact corpus is unavailable. No universal absence of semantic checking across uninspected tests follows. See the complementary saved-links finding retained in report verification, MEM-RTE-lint-retention and EPI-RTE-corpus-evaluation.

Generated conventions are a partial feedback mechanism

Schema bootstrap generates a localized Markdown maintenance document from committed-page metadata and supplies it as conventions in later drafting. Existing schema normally prevents regeneration. Its instruction authority is requested model behavior, not deterministic control of the planner. The independent property findings are:

  • Theory-builder condition 1, localized formulation: afforded by the requested whole rule document; no generated instance was inspected.
  • Condition 2, consumption: dependence is requested through wired draft delivery; actual decisions depending on the document's content remain unobserved.
  • Condition 3, content-directed criticism: uninspected/unestablished for the generated schema, not evidenced absent inside opaque model processing.
  • Condition 4, criticism-shaped iteration: uninspected; cross-session delivery does not establish retention and use of criticism in another round.
  • Learning from criticism of a consumed theory: improved future capacity and its attribution remain uninspected. No criticism-to-improvement comparison is supplied.
  • Reflection: page metadata can inform maintenance conventions that return to drafting, a limited wired feedback possibility rather than observed criticism of the system's own operation.
  • Autonomy: code automatically coordinates internal compile stages, but this does not establish an autonomous theory builder performing formulation, criticism and iteration. Reflective theory-builder membership is independently unestablished.
  • Self-improvement: at the shipped-system boundary across later sessions, retained conventions can reach a behavior-shaping path. The records do not establish an independently specified improvement objective whose evidence determines a corrective update, or subsequent operation causally depending on that change. Exercised self-improvement—and successful improvement—therefore remain unestablished, separately from the positive trace-fed writes above.

These distinctions follow RT-RTE-schema-bootstrap and RT-BAP-schema-drafting. Operator-invoked upstream product updates are a different mechanism, not locally generated self-improvement: RT-RTE-product-update.

For a source-accumulation scenario, Kompl supplies explicit persistence, cross-session planning and reload paths. For a scenario requiring verified factual answers, universal semantic withdrawal or evidence-responsive improvement, the records support only narrower operational mechanisms. Paired inputs and outputs with source-level evaluation would change the fidelity assessment. A corrected page-to-source lineage path plus an inspected approval/retrieval trace would change the FAQ-cycle assessment. An objective-linked criticism/update comparison and later behavior trace would change the improvement assessment. These are distinct evidence needs, not a product ranking.

Source-read log: none. This synthesis uses only the supplied contracts and pinned members, without additional target-source reads.

Limitations

Limitation Affected SRC IDs and record citations Inspected boundary Conclusion prevented Evidence that would resolve it
Current-revision operation and benefit are unobserved. SRC-1; RT-RTE-session-compile, RT-CLM-durable-completion, RT-RTE-chat-feedback Shipped source and instructions; no target execution or supplied complete workflow trace. Successful sessions, recovery reliability, citation fidelity, deployed isolation or causal benefit. Revision-linked execution artifacts, failure/recovery traces, deployment evidence and appropriately controlled outcome comparisons.
Historical evaluation has a limited check domain and missing inputs. SRC-1; EPI-RTE-corpus-evaluation, boundary evidence May provider reports and inspected runner; exact corpus absent, May 22 results pending; other tests not comprehensively assessed. Reproducing exact historical inputs, semantic provider superiority or a system-wide absence of semantic oracles. Retained corpus and outputs, completed results, source-truth criteria and relevant remaining evaluator inspection.
Generated meaning, rationale and hidden state remain unresolved. SRC-1; RT-RTE-plan-draft, RT-RTE-schema-bootstrap, MEM-OBJ-wiki-pages Selected generation/consumer implementations; no paired generated artifacts, schema instance/rationale, original imported-vector derivation or provider checkpoint internals. Complete semantic-transformation, lineage or memory inventories; theory criticism, improved capacity or self-improvement attribution. Paired artifacts and actual delivered context, schema/criticism/iteration traces, import provenance and inspectable provider-state contracts or traces.
Memory retains a stale history-correction attribution, one reconciliation conflict. SRC-1; MEM-RTE-history-read, RT-RTE-chat-feedback, memory integration issues, report verification limits Current runtime and memory both establish earliest-row selection; memory still attributes a recent-tail claim to runtime. Treating this as a current mechanism dispute or an unmet runtime correction; fully consistent cross-report attribution. Corrected memory attribution checked against the supplied runtime version.
Memory retains a stale adoption-correction attribution, the other reconciliation conflict. SRC-1; MEM-CLM-chat-provenance, RT-RTE-chat-feedback, RT-RTE-draft-approval, memory integration issues, report verification limits Runtime already incorporates ordinary provenance failure and the exceptions that memory requests. Treating constrained adoption as disputed or the runtime correction as outstanding; this does not license ordinary compounding. Corrected attribution preserving the agreed adoption constraint and exceptions.
Chat-draft cleanup does not cover every automatic draft. SRC-1; MEM-RTE-withdrawal-cleanup, EPI-RTE-zombie-cleanup, MEM-RTE-manual-save, RT-RTE-chat-feedback, report verification limits Page-ID pruning requires pending sessions matching chat-%; manual saves add that prefix, automatic creation preserves caller session IDs. Complete automatic/manual dependency cleanup or semantic withdrawal; nonmatching automatic drafts can retain IDs and unchanged prose. Consistent draft identity/cleanup wiring with coverage of matching and nonmatching sessions, plus semantic checks for surviving prose.
The partial write-agency inventory omits separate diagnostic-retention units. SRC-1; MEM-OBJ-activity-log, MEM-RTE-lint-retention, EPI-RTE-triage-disposition, profile verification limits Accepted records establish automatic diagnostic and last-run updates; profile units do not classify them individually. Every recorded admission mechanism being enumerated or diagnostic retention individually covered; other automatic existence findings and afforded manual admission remain valid. Separate classifications for the recorded diagnostic/control writes.
Grouped comparison units combine retained copies or authority paths. SRC-1; MEM-RTE-saved-links, RT-RTE-chat-feedback, MEM-OBJ-pages, profile verification limits Saved-links and FAQ units combine update/downstream effects; storage/prose units combine copies or objects, with distinctions retained in notes. Per-object/per-consumer counts, or comparisons assuming one storage copy or authority path per unit. Disaggregated units preserving each part, consumer, copy and evidence basis.
The functional boundary is not an exhaustive audit. SRC-1; boundary coverage, report verification stopping decision, MEM-RTE-storage-write Material production/consumption and selected alternate routes traced; converter branches, every UI caller, export consistency, all tests and deployed direct writers not comprehensively assessed. Exhaustive source fidelity, security, backup completeness, human-review provenance or consumer coverage. Targeted inspection and evidence for the particular additional guarantee, without treating available uninspected files as access gaps or absence.