sift-kg report verification

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

Verification

The reports support a bounded source-level account of document-derived graph memory, automatic and status-controlled mutation, derived prose and caller-directed retrieval. No material blocker was found. One local route-attribution defect remains a limit below. This judgment concerns the supplied reports and reconciliation, not observed extraction quality or host-agent performance.

Evidence and coverage checks

I read all supplied members, their types, the record contract and the structural check. The four correction-answer files are empty; there are no correction arguments to accept or reject. The structural check reports none, so there is no structural failure requiring routing. I independently rechecked checkout HEAD and the tracked top-level tree against boundary. Both match the frozen revision. The whole-system classification is supported: shipped CLI and library drivers cover production, maintenance and later consumption; the external conversational host is not silently attributed to sift-kg.

Independent source inspection used SRC-1 only. It traced src/sift_kg/extract/extractor.py through direct and bulk extraction, src/sift_kg/extract/llm_client.py through both completion methods, src/sift_kg/domains/discovery.py through generation/save/reload, and src/sift_kg/graph/builder.py through construction, postprocessing and retained-input reload. Further reads covered graph add/load/save/support handling in src/sift_kg/graph/knowledge_graph.py; resolution batching and response parsing in src/sift_kg/resolve/resolver.py; model and threshold alternatives in src/sift_kg/graph/prededup.py and src/sift_kg/resolve/clustering.py; review models, interactive decisions and surgery in src/sift_kg/resolve/; narrative generation, context selection, sidecar reuse and both rewrite paths in src/sift_kg/narrate/generator.py; and the build, review, application, search, info and query bodies in src/sift_kg/cli.py. Reader dispatch, export dispatch, viewer sidecar/community loading and the complete bundled skill were also inspected. Scoped searches checked completion/executor alternatives, model configuration, prompt budgets, approval doctrine, CI and deployment consumers. This is implementation and doctrine evidence, not target execution. No target commands, tests, examples or services were run.

Runtime and memory dispositions

  • RT-CMP-llm-client, RT-CMP-sem-hash, RT-CMP-sentence-transformer and RT-CMP-ocr-backends preserve the distinction between inspectable adapters and opaque numerical components. The inspected adapters request inference rather than parameter updates; unpinned identifiers do not establish immutable deployed weights. The opaque OCR alternatives remain named, not treated as absent.
  • RT-RTE-schema-discovery and MEM-OBJ-discovered-domain correctly distinguish model authorship, typed/nonempty admission, persistence and subsequent prompt/build consumption. The separately qualified theory properties are not inferred from automatic generation or reuse alone. RT-BAP-domain-guidance correctly separates interpreted prompt instructions from fixed build rules.
  • RT-RTE-document-extraction and MEM-OBJ-document-extraction match both direct and bulk implementations. Cache staleness compares configuration rather than source contents. Bulk discovery and summaries precede chunk-budget admission; the admission test precedes semaphore acquisition. Caught chunk failures return empty results, which can enter a document with no document-level error. These witnesses support the stated freshness, partial-result and best-effort-cost qualifications, not an observed failure frequency.
  • RT-RTE-graph-build, MEM-OBJ-graph-data and MEM-OBJ-relation-support match fresh construction, automatic pre-deduplication, entity aggregation and canonical edge support. The graph is saved before review flags are produced in both shipped build drivers. Retained mentions are derived extraction contributions; product-complement confidence is not a validated truth probability. Loading retained JSONs without reconciling the source directory supports the document-deletion qualification.
  • RT-RTE-entity-resolution, MEM-OBJ-merge-proposals and MEM-OBJ-relation-review preserve the selected identity payload, overlapping or optional embedding batches, DRAFT proposals and retained reasons. Cross-type name proposals are reached after the model-task branch; their 0.95 confidence is a code constant. They do not establish independently checked identities.
  • RT-RTE-review-application matches threshold-first review, interactive remainder, direct-edit authority, confirmed-merge filtering and rejected-edge removal. Neither CLI nor library application inserts confirmed variant proposals. RT-CLM-merge-approval is therefore correctly qualified: confirmed status is an engine gate, not authenticated universal human approval. Pre-deduplication is a separate path. Missing nodes can prevent application, and rejection is not undo.
  • RT-RTE-narrative-generation, MEM-OBJ-communities, MEM-OBJ-entity-descriptions and MEM-OBJ-narrative preserve distinct outputs and consumers. Context loading joins by display name, descriptions select bounded relations/excerpts, themed communities can bypass regeneration, and conditional description saving can leave old sidecars. Rewrite instructions do not enforce factual equivalence. The saved narrative's reader affordance is not misrepresented as an automatic graph-update consumer.
  • RT-RTE-graph-retrieval, MEM-RTE-project-info, RT-RTE-view-export and RT-BAP-agent-skill distinguish executable reload/delivery from host scheduling and uptake. Query ranks ambiguous matches and selects a clean neighborhood; it does not return every retained provenance field. Search matching is not universally DOCUMENT-filtered. Native JSON and analytical exports differ, and viewer fallback communities use a different graph representation. The skill's direct small-graph loading is a documented alternative, not an enforced token budget or automatic injection mechanism.

The scoped executor search supports RT-ABS-tool-execution: the shipped completion methods return text, and inspected consumers parse data or use prose rather than dispatch model-selected tools. Its explicit exclusion of dependency internals and external host tools is necessary and retained. All route implementation statuses remain source-level wired; none is promoted to observed operation by code presence.

Epistemic, workflow and reconciliation dispositions

I checked every epistemic ledger function against its cited record and relevant consumer. EPI-RTE-extraction-shape correctly licenses shape/range admission, not factual acceptance. EPI-RTE-style-rewrite correctly separates regex checking, model transformation and automatic retention. EPI-RTE-relation-normalization is a supported conditional semantic counterexample: SRC-1 src/sift_kg/graph/postprocessor.py maps TRAVELED_FROM to TRAVELED_TO when the former is not already valid, keeping endpoints unchanged. The Paris-to-Rome countermodel establishes non-entailment under ordinary meanings; it does not establish an observed extraction incident. The report does not extend this classification to every rewrite.

The remaining transformation rows appropriately distinguish acquisition with unknown source warrant, indeterminate model transformations and graph-relative structural derivation. Operational status admission is not conflated with evidence-consuming factual acceptance. EPI-CLM-explicit-extraction, EPI-CLM-graph-grounding and the runtime approval claim have distinct sources and are compared to the actual routes rather than treated as guarantees. The sole exception is the local info attribution retained below.

All eight epistemic object declarations were checked for source-native referent, form and containment. EPI-OBJ-document-text, EPI-OBJ-document-summary and EPI-OBJ-extracted-content are distinct inputs/output content of extraction. EPI-OBJ-domain-config, EPI-OBJ-graph-data, EPI-OBJ-review-state and EPI-OBJ-derived-prose have the stated parent-route relationships. The three epistemic subroute Part of: relations identify operations inside their wider runtime routes, not replacement routes. EPI-OBJ-structural-results has a local overbroad attribution for info, not a false structural-computation finding.

Workflow follows an expressly shipped create/update-and-answer procedure with an optional maintenance branch. The separate caller-controlled stages, paid-call permission protocol, threshold/manual decisions, quit/reject behavior, missing-node recovery and two delivery boundaries match the skill and implementation. There is no invented autonomous worker hierarchy or end-to-end acceptance test. Its annotations add workflow roles without redeclaring identities.

Reconciliation preserves the material differences. Its one supersession identifies the same discovered configuration in epistemic and memory records; it does not replace static domains or strengthen theory findings. The extraction, graph, review and prose containers remain alongside valid parts, with their separate consumers and evidence intact. Search filtering is correctly treated as a scoped addition rather than a contradiction. Freshness, withdrawal, evidence delivery and host-uptake dispositions agree with the independently traced consumers. The unresolved info conflict includes both positions, record citations, evidence and the prevented conclusion; its disposition is a limit, not an unexamined disagreement.

Omission questions and stopping decision

The tracked tree, CLI command inventory and producer/consumer dependencies selected three consequential questions beyond checking the submitted anchors. First, could direct extraction or library drivers bypass the controls described for CLI bulk work? Direct/text extraction lacks the bulk cost gate, and library build/application remain distinct shipped paths; the runtime already retains these differences. Second, could retained prose or review state silently supply stronger acceptance, freshness or withdrawal than the main graph account states? Reading the actual sidecar consumers, review filters and rebuild inputs supports the reports' narrower claims, not such a guarantee. Third, could the skill or another shipped executor turn caller-directed lookup into automatic cross-session scheduling or model-directed action? The complete skill, command-registration search and completion-call search support a host protocol and bounded data/prose calls; external host implementation remains outside the boundary.

Further optional omission expansion stopped because these questions have supported dispositions, the known attribution discrepancy is localized below, and no identified material alternative remains without disposition. Unread evaluator bodies and dependency internals do not establish absent behavior. They also do not license accuracy, deployed reliability, exhaustive consumer equivalence or causal-benefit comparisons. Those conclusions are already withheld by the reports; their faithfully scoped uncertainty is not an additional defect.

Blockers

none

Limits

  • EPI-OBJ-structural-results and its entailed-derivation row in the authority ledger group info/topology/query under RT-RTE-graph-retrieval, including a Part of: attribution that is too broad for info. As the reconciliation conflict records, MEM-RTE-project-info establishes info separately. SRC-1 src/sift_kg/cli.py confirms separate info and query commands, with info additionally consuming extraction-file counts, review status and narrative existence. Withhold the inference that the runtime retrieval route itself covers info, or that every structural-result field has the same inputs and selector. Graph-relative computation and the existence of the info consumer remain supported independently. This is a local route-accounting defect, not a blocker: it changes no emitted absence, factual-warrant claim or central runtime/memory conclusion, and the missing attribution is supplied explicitly by the memory record rather than left as an unknown consumer.