Agentic Local Brain report verification
Type: agentic-system-analyses/types/agentic-system-verification.md
Verification
Judgment and evidence
The current reports support a bounded source-grounded account with three local inventory limits below. The two previous epistemic blockers are repaired. The remaining reconciliation budget objection does not establish a required runtime correction. The supplied report-check is none; there is no structural finding to route.
I read all supplied members, types, correction answers and the previous verification, then judged their claims against the frozen source afresh. The epistemic answers describe two corrections; the other answer files are empty. Answers are not evidence of repair by themselves. Checkout HEAD equals the revision in boundary. Tracked-tree inspection and all additional source inspection use SRC-1 at that revision, supplying implementation or doctrine/design only. No target code, tests, examples, providers or services were executed. No observed operation, quality, durability or causal benefit is inferred.
Record, evidence and consumer checks
The checks below cover every declaration and the annotations, including source-anchor meaning, status scope, consumers and effect boundaries. Supplied record quotations support the findings unless an additional witness is retained below.
- Model components and static controls. Checked RT-CMP-litellm-provider, RT-CMP-query-expander, RT-CMP-llm-reranker and RT-CMP-embedding-provider against SRC-1
kb/processors/tag_extractor.py,kb/processors/embedder.py,kb/query/query_expander.py,kb/query/reranker.pyandkb/query/retrieval_pipeline.py. These callers send text/configured arguments and consume responses or vectors; they do not update provider parameters. Alias/endpoint configuration is not a weight-version pin. Checked RT-OBJ-config, RT-OBJ-prompt-templates, RT-CLM-context-answer, RT-BAP-template-guidance and RT-BAP-config-selection against SRC-1kb/config.py,kb/query/prompt_templates.py,kb/web/routes/settings.pyandkb/web/dependencies.py. Instructions reach model messages, while configuration selects construction arguments. Config-cache clearing is not pipeline-singleton replacement. Neither pathway independently validates answer truth. - Collection and workflow delivery. Checked RT-RTE-file-admission, MEM-RTE-note-admission, RT-RTE-host-fallback, MEM-OBJ-knowledge, MEM-OBJ-chunks and EPI-OBJ-collected-metadata against SRC-1
kb/commands/collect.py,kb/commands/utils.py,kb/collectors/base.py,kb/collectors/file_collector.pyandkb/storage/chroma_storage.py. Saved-file reload and direct-note indexing differ. File, metadata and index effects are sequential; indexing failure need not veto the collection display. Caller metadata overrides do not imply approval of automatically generated missing fields. The workflow account and its two annotations correctly connect the skill's failed-webpage recovery to file admission, rather than inventing an autonomous application browser loop. SRC-1skills/localbrain-collect/SKILL.mdsupports host fetch, temporary Markdown and user-content escalation as instructions. File-path provenance and duplicate checking do not automatically preserve or deduplicate the original URL. Application completion is distinct from unobserved host-to-user delivery. The additional storage-to-worker path is retained as a limit, not silently treated as absent. - Retrieval, history and authority. Checked RT-RTE-chat-query, RT-RTE-legacy-query, MEM-OBJ-rag-conversations, MEM-OBJ-reading-history, MEM-RTE-history-selection, MEM-BAP-retained-context, MEM-BAP-event-selection and EPI-RTE-history-recommendation. SRC-1
kb/query/retrieval_pipeline.py,kb/query/rag.py,kb/query/context_builder.py,kb/query/conversation.py,kb/query/reading_history.py,kb/processors/recommendation.pyand HTTP call sites inkb/web/routes/search.pyandkb/web/routes/items.pysupport the conditional chains. Cache lookup precedes session work and its key omits options; empty retrieval precedes turn saving. Later history receives role/content, not retained source dictionaries. The recommendation profile is recomputed from recent event IDs/times and vectors; local reason strings describe topic/recent-title associations, not validated relevance. Recent-window exclusion is not all-ever-read exclusion. Query-only events do not become document-ID preference evidence. Personalization depends on chunk-source matching and is bypassed by result-cache hits. Ranking authority is distinct from factual warrant and observed benefit. - Generated answer and its repaired score part. Checked EPI-OBJ-chat-answer, new EPI-OBJ-answer-confidence and EPI-RTE-confidence-metadata against SRC-1
kb/query/retrieval_pipeline.py. The formula consumes chunks and stage labels, not answer assertions. The numeric part now has its own provenance, arithmetic domain and advisory result/cache consumers. The inventory, ledger and bounded conclusion cite it separately. The answer container remains valid; successful conversation storage of answer prose does not establish conversation storage of its score. This repairs the earlier object-level authority conflation without changing an existing ID. - Mining products and narrow checks. Checked RT-RTE-mining-run, MEM-OBJ-entities, EPI-OBJ-entity-relations, MEM-OBJ-document-embeddings, MEM-OBJ-document-relations, MEM-OBJ-topic-clusters, EPI-RTE-structural-checks, EPI-RTE-extractive-summary and EPI-RTE-numeric-selection. SRC-1
kb/processors/entity_extractor.py,kb/processors/tag_extractor.py,kb/processors/builtin_extractor.py,kb/processors/doc_embedding.py,kb/processors/doc_relation_builder.py,kb/processors/topic_clusterer.py,kb/processors/mining_worker.py,kb/processors/mining_runner.py,kb/web/routes/mining.pyandkb/commands/mine.pysupport the stated distinctions. Entity upserts can increase counters without a new source association. Structural type/endpoint checks reject malformed candidates, not false source-domain claims. The concrete complete-sentence summary example follows the inspected selection rules; its broader truncation branches remain qualified. Cosine/count computations and threshold admission license represented-input relations, not source-domain truth. Centroid updates can alter later classification without demonstrating improvement. Web confirmation and check-before-scheduling do not establish a cross-process or CLI-wide lock. JSON and packed-vector readers/writers differ as reported; conditional packed-writer reachability is retained below. - Wiki synthesis, currentness and browsing. Checked RT-RTE-wiki-compile, MEM-OBJ-wiki-articles, EPI-OBJ-wiki-article, EPI-RTE-category-recompilation, EPI-CLM-wiki-synthesis and EPI-CLM-staleness-tracking against SRC-1
kb/processors/wiki_compiler.py,kb/web/routes/wiki.py,kb/storage/sqlite_storage.pyandREADME.md. Topic compilation uses selected retained summaries through its source loader; prompt budgeting can omit material while source IDs remain. Generation, parse fallback, file write, metadata admission and later human browsing are wired, not factual acceptance. The category selector compares ID sets, so same-ID text edits need not trigger recompilation. This is a supported mismatch with the broader README currentness claim. Entity-card compilation has a different input/lineage path, retained below as an incomplete-inventory limit. - Editing, withdrawal and repaired cleanup part. Checked RT-RTE-item-update, MEM-RTE-item-withdrawal, EPI-RTE-item-withdrawal and new EPI-RTE-title-cleanup against SRC-1
kb/web/routes/items.py,kb/storage/sqlite_storage.pyandtests/cleanup_duplicate_webpages.py. Metadata edits add tags and do not rewrite files or vectors in the handler. HTTP withdrawal deletes SQLite first, then attempts vectors and optional files. Schema cascades remove selected associations; they do not retract free-standing entity claims, wiki prose, prior conversation text or archives. Cleanup groups at most 1000 listed webpage rows by exact title, keeps the first and invokes SQLite deletion only. The new part separately owns that criterion, consumer and effect boundary; coverage, ledger and conclusion use it. The prior route-part blocker is repaired without discarding its valid container. - Maintenance and bounded absence. Checked RT-RTE-settings-update, RT-RTE-product-update and RT-RTE-backup-restore against SRC-1
kb/web/routes/settings.py,kb/web/dependencies.py,kb/self_update.pyandkb/commands/backup.py. Checksum bypass, pip wheel installation, Windows pending replacement, Unix two-move recovery and parent-directory archive extraction support the stated limits rather than universal integrity, atomicity or isolation. Independently repeated the search underlying RT-ABS-tool-dispatch in SRC-1kb/query/,kb/processors/,kb/web/app.py,kb/web/routes/search.pyandkb/web/routes/mining.py, inspecting completion construction and the fixed ripgrep subprocess. No application model-tool dispatcher is established there. This bounded absence does not cover host tools, successor packages or learning through retained content.
All route wired findings concern inspected implementation; host fallback remains instruction-only. No record's evidence justifies observed or causal status. The epistemic ledger separates checks, disposition, retention and operational consumption; inaccessible generated proposition instances remain indeterminate, not automatically ampliative. Its bounded lack of demonstrated factual acceptance is not a system-complete negative about evaluators, learning, reflection, autonomy or theory building.
Relations, correction answers and conflict dispositions
Checked every explicit epistemic Part of: relation. Collected metadata and built-in summary extraction belong to file admission; entity output and numeric selection belong to mining; wiki output and recompilation eligibility belong to compilation; answer output and confidence production belong to enhanced chat. New score-object containment in the answer container and new cleanup-route containment in the withdrawal container are supported. Cross-kind output/producer containment is explained, not mistaken for identity.
The sole Amendment in reconciliation is supported: the epistemic entity object and memory entity object identify the same four SQLite structures. Other overlap dispositions preserve different scopes: broader knowledge/category/session containers, returned score versus saved turns, recommendation versus recommendation-plus-enrichment, and HTTP withdrawal versus HTTP-plus-title-cleanup. Neither a shared passage nor a different analyst prefix alone determines identity. Workflow declares no competing records. Memory annotations preserve consumer-specific qualifications rather than rewriting runtime identities.
The two epistemic correction answers hold against both the changed declarations and their dependent inventory, ledger, conclusion and reconciliation passages. The prior missing-part conflicts no longer apply. Reconciliation's statement that it received no correction answers describes its own input envelope; it does not invalidate the answers supplied to this verification.
The remaining unresolved conflict has an anchored pair of findings, evidence and prevented universal-budget conclusion, but its objection is dismissed as a required runtime correction. MEM-CLM-budget-scope correctly identifies an alternative flat builder. SRC-1 kb/query/retrieval_pipeline.py selects it only when no builder was supplied. SRC-1 kb/web/dependencies.py supplies a hierarchical builder for the ordinary web route actually traced by RT-RTE-chat-query. Runtime does not emit a universal builder or whole-message hard-cap guarantee. Both scoped findings can stand; neither supports a universal hard cap. The decisive source witnesses are:
builder = self.context_builder if builder is None: if context_format == "flat": builder = SimpleContextBuilder() ---
kb/query/retrieval_pipeline.pycontext_builder = HierarchicalContextBuilder(budget=context_budget) ---
kb/web/dependencies.py
Wiki freshness, retained survivors after withdrawal, vector-decoder coverage and different personalization inspection scopes are compatible findings. No remaining disagreement requires selecting the strongest status or changing another author's text.
Omission questions and stopping decision
The tracked tree, alternative shipped callers and producer/consumer dependencies selected four consequential questions: whether storage insertion starts the worker; whether full wiki compilation calls entity-card generation; whether relation maintenance reaches the packed-vector writer; and whether included shipped evaluators undermine the bounded warrant account. I independently rechecked the first three caller chains and retain their supported omissions as the three limits below. They affect inventory, ordering and lineage comparisons, not the established staged-retention and conditional-consumption conclusions.
For the evaluator question, SRC-1 tests/test_retrieval_pipeline.py uses mocked answer text and checks pipeline outputs; tests/test_model_services_integration.py includes a service probe comparing related/unrelated embedding similarities. These are inspectable evaluation implementations, not supplied execution evidence or an admission-time factual oracle for retained articles/answers. The reports already withhold a system-complete evaluator negative. Source search of SRC-1 examples/ also confirms direct collector callers rather than assuming every shipped invocation performs the CLI persistence/index sequence. The reported partial inventory remains partial.
One search used the nonexistent guessed path tests/test_model_services.py and exited 2. I inspected the tracked test tree, corrected the path to tests/test_model_services_integration.py and read that source before drawing the evaluator disposition. No claim rests on the failed search.
Further optional omission expansion stopped because every selected material challenge now has a supported disposition or a local limit. Additional remote parsers, fixture drivers, frontend details and provider internals are available or excluded as already stated; their mere presence does not justify exhaustive expansion. The reports withhold comprehensive fidelity, synchronization, evaluator coverage, semantic quality and deployment guarantees. No identified unsupported central conclusion remains without disposition.
Blockers
none
Limits
- RT-RTE-file-admission, RT-RTE-mining-run and the memory mining annotation leave the storage-to-worker connection unresolved. Additional SRC-1
kb/storage/sqlite_storage.pyinspection establishes an attempted background invocation after successful insertion, supplying summary rather than full document content. Withhold complete invocation/lineage and serial-stage comparisons: ordinary admission can initiate mining alongside later indexing. Staged persistence, independent worker failures and unobserved execution remain valid. Minimum witness:from kb.processors.mining_worker import mine_document_async mine_document_async( knowledge_id=id, title=title, content=summary or "", db_path=str(self.db_path), ) ---
kb/storage/sqlite_storage.py - MEM-OBJ-wiki-articles, RT-RTE-wiki-compile and EPI-OBJ-wiki-article are not a complete wiki-generation inventory. Additional SRC-1
kb/processors/wiki_compiler.pyinspection finds a thresholded entity-card call in compile_all; its implementation uses entity description, topic titles and up to five mention contexts, writes durable prose and saves empty source-document lists. Withhold uniform topic-document lineage/source-link and source-set-freshness comparisons for all wiki articles. The documented topic path and bounded lack of demonstrated factual acceptance remain supported. Minimum caller witness:if len(data["clusters"]) >= self.entity_card_threshold: try: self.compile_entity_card( entity=data["entity"], topic_appearances=data["clusters"], conn=conn, ) ---
kb/processors/wiki_compiler.py - MEM-OBJ-document-embeddings correctly exposes differing reader coverage but leaves the packed writer's caller unresolved. Additional SRC-1
kb/processors/doc_relation_builder.pyinspection establishes its missing-embedding fallback inside relation construction, which the worker calls. This is conditional wiring, not evidence of binary rows or failures in an installation. Withhold universal decoder compatibility, uniform vector provenance and a complete active-writer inventory; JSON-based generation and scoped numerical relations remain supported. Minimum witness:embedding = self.get_doc_embedding(knowledge_id) if embedding is None: embedding = self.generate_doc_embedding(knowledge_id, title, summary) ---
kb/processors/doc_relation_builder.py