Engraph synthesis

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

Bounded synthesis

From vault service to retained context

Engraph is a local Markdown-vault knowledge service, not the conversational agent that uses it. Its shipped CLI, library, MCP and optional HTTP adapters admit and maintain notes, build retrieval structures, and return selected material to clients. The whole-system analysis covers those paths, setup, agent instructions and product-maintenance declarations at commit f9a95bc96accc792c02ee384d9e6bf768a88c8c8, with an applicability cutoff of 2026-10-14. The sole source, SRC-1, supplies inspected implementation and declared design. No target, tests, models, user-vault runs or causal experiments were executed or supplied. This is an account of implemented routes, not demonstrated retrieval quality or successful agent work (boundary, Source register).

The persistent source is editable Markdown on disk. SQLite separately retains file metadata, short chunk snippets, full-text entries, dense vectors, graph relationships and other derived state. Embedding sees full chunks, while saved display snippets can contain only the first 200 characters plus a marker. Later full reads recover current disk bodies. Consequently, the material used to select a note, the material scored by a reranker, and the body subsequently delivered need not have the same completeness or freshness (MEM-OBJ-vault-notes, MEM-OBJ-file-record, MEM-OBJ-chunk-record).

Admission, persistence and a representative delivery

The shipped standup-note example expects an external Claude Code client to supply content, tags and a type hint to MCP create. Engraph does not obtain or verify the meeting facts itself. The handler checks read-only, locks its store and embedder, and passes the proposed note to writer code. Code resolves tags, applies exact/alias links and sufficiently confident fuzzy links, merges metadata, and chooses a destination. An explicit folder overrides automatic placement; otherwise type rules precede semantic folder similarity and inbox fallback. These transformations have software admission, not a demonstrated human approval of every altered byte. Adapter-generated created_by labels do not authenticate authorship (workflow account, RT-RTE-note-admission).

Create prepares embeddings, writes a temporary file, inserts retrieval state in a database transaction, commits, then renames the file. Successful delivery is serialized path/docid, tags, link suggestions and placement metadata. It is not semantic acceptance, automatic post-write inspection, or the external agent's answer to the user. Errors can occur after persistent effects; insertion failure attempts rollback and temporary-file removal, while startup cleanup removes incomplete state rather than replaying the requested note. A later requested read is wired, but is not a required completion gate (RT-CLM-write-consistency, MEM-RTE-vault-readback, workflow account).

Maintenance does not give all writes the same guarantee. Watcher startup reconciles downtime changes, and subsequent events update selected index state. Section edits and rewrites change disk and stored mtime without rebuilding chunks inside their writer functions. Matching tool-write events can then be suppressed by the watcher, so ordinary event delivery cannot be assumed to repair their search state. Moves likewise remove old retrieval entries without immediately recreating chunks. Explicit indexing or a different subsequent change may matter (RT-RTE-index-refresh, RT-RTE-note-admission, report verification limits).

Selection and return, not factual endorsement

For ordinary search, code owns progression. With optional intelligence available, an orchestration model or cached result supplies intent, expansions and dates; otherwise heuristics apply. Embedding/vector and full-text lanes feed graph/date expansion and reciprocal-rank fusion. Optional reranking scores up to 30 candidate snippets. Mandatory embedding errors propagate, while some optional lane failures degrade to empty lanes or fallback. A successful response therefore does not certify that every lane participated. The terminal output is ranked references and snippets for a client, not an internally generated answer (RT-RTE-query-search).

The local embedding, orchestration and reranking calls do not update model parameters in the inspected inference code. Model files are cached, but fresh acquisition uses mutable resolve/main URLs without an immutable weight revision or required digest. Repeated query interpretation can also come from SQLite cache selected only by query hash, not model identity or age. Fixed inference weights thus coexist with mutable acquired models and retained query policy (RT-CMP-llama-embed, RT-CMP-llama-orchestrator, RT-CMP-llama-rerank, RT-OBJ-llm-cache).

The checks license different things. Orchestration parsing admits usable structure, not faithful query meaning. Reranking judges query–snippet relevance, not note truth. Displayed confidence divides each fused score by the highest score in that invocation: a single positive candidate can receive 100 percent without evidence of absolute relevance or factual accuracy. Documentation discloses normalization; a calibrated-certainty interpretation would exceed the mechanism (EPI-RTE-orchestration-parse, EPI-RTE-confidence-normalize, EPI-CLM-search-confidence).

Topic context is a distinct requested route: basic search without optional orchestration/reranking selects five direct hits and one-hop neighbors from three seeds, then rereads and trims disk bodies. Its nominal character budget is byte-based, and added truncation markers prevent a strict total-byte guarantee. Omitted bodies remain reloadable through read/section tools. This controls a tool return, not the client's old turns or total conversation window. Full-note, person and project returns do not inherit this common budget (RT-RTE-topic-context, MEM-RTE-vault-readback). Requested content delivery is pull; internal automatic supply of cached policy, profile, registry and centroid state is a separate mechanism, not unsolicited vault text injected into an agent window (profile verification).

Derived identity and structural diagnosis

Identity extraction selects projects, prominent people and daily-note snippets, retains tier-1 values, and later formats them with configured identity. Some transformations create associations rather than merely retrieve them. Whole-snippet person matching can associate Alice with Bob's vacation line even when the snippet says Alice is in office. Removing checkbox markers can also present a completed priority as current focus. These are source-level counterexamples, not observed user-vault outputs. Some rows lack source paths, and formatted delivery omits source fields. Ordinary watcher events do not regenerate this view; extraction time is neither elapsed-day expiry nor a guarantee of current state (MEM-RTE-identity-context, MEM-OBJ-identity-fact, EPI-RTE-identity-extract).

Health reporting evaluates index-relative structural predicates such as unresolved links, isolated notes and path/tag conventions. It advises clients rather than enforcing semantic acceptance. Its stale-note function returns an empty list without checking age, and the advertised CLI health variant is not present in the inspected dispatch; MCP/HTTP reporting remains wired. Withdrawn notes can also leave unresolved-link diagnostic entries. Neither an empty stale list nor index age certifies a current vault (MEM-OBJ-health-report, EPI-RTE-health-report, EPI-CLM-health-diagnostics, report verification limits).

These routes acquire, retain, reshape and sometimes conjecture content. Their operational admission and delivery do not establish evidence-consuming acceptance of note truth or lifecycle integration after such acceptance. That finding is bounded to inspected routes, not a universal negative about external clients or opaque model cognition (epistemic conclusion).

Adaptation and scenario-relative assessment

The strongest supported use-derived contribution is automatic placement adaptation. A recognized moved note with surviving suggestion metadata supplies an event and retained vectors; code adjusts durable folder centroids, logs a correction and strips suggestion fields. Later semantic placement consumes the centroids, not the raw log. This is wired trace-fed behavior shaping without online model training. Eligibility is narrow: recognized labels are claude-code, cli and mcp-server, not http-api; create supplies the relevant suggestion metadata for a positive but below-threshold inbox fallback. Future writes must reach semantic placement rather than explicit-folder or type-rule bypasses (MEM-RTE-placement-feedback, MEM-OBJ-placement-corrections).

The unresolved question is whether that adaptation improves future filing. Moves are proxy feedback, not authenticated human judgments or a correct-placement oracle. Batch indexing uses first-path-component groups and chunk counts; feedback uses parent-folder keys and note-mean vectors, with different count semantics. No coherent full-vault centroid invariant or global feedback reset is established. A before/after placement comparison with attributable updates and an independently defined placement objective would change the benefit assessment (MEM-OBJ-folder-centroids, EPI-RTE-placement-correction).

The independent properties should not be collapsed. Theory-builder conditions 1–4 are not jointly established by this pathway: durable numerical updates do not demonstrate formulated content-directed criticism or iterative theory revision. Improvement caused by criticism of a consumed theory is unestablished. The runtime does not supply a full condition-by-condition theory or reflective-system assessment, so no system-wide absence of theory building or reflection follows. Code automatically owns the internal feedback progression, but autonomous theory building is independently unestablished. For placement self-improvement, the implemented event-to-update-to-later-selector chain is a partial contribution; no subsequent operation demonstrates causal dependence on the update, and no independently evaluated outcome establishes successful improvement. These conclusions concern this pathway, not inaccessible model processing (MEM-RTE-placement-feedback, EPI-RTE-placement-correction, epistemic conclusion).

For a client needing searchable, reloadable vault context, the source supports a concrete production-to-retention-to-return path. For a client needing warranted current-state facts, uniform post-edit freshness, strict context limits or observed improved filing, it does not supply those stronger assurances. Deployment controls are also scoped: HTTP keys authorize covered handlers; stdio MCP, CLI, library and watcher operations do not pass through that layer. Server read-only blocks selected note mutations but not setup apply, reindex or maintenance. Caller-controlled joined paths lack inspected containment checks, so vault roots and bearer keys are not filesystem isolation (RT-RTE-http-access, RT-CLM-server-readonly, RT-RTE-note-admission).

Material evidence or system changes would alter these conclusions: pinned model bytes and cache invalidation would improve reproducibility; traced edit reindexing would support freshness claims; semantic checks with source-bearing identity outputs would change warranted-reliance assessment; containment checks would change the effect boundary; exercised failure/recovery traces would test persistence guarantees. Product CI and release declarations establish a separate maintenance plane, not successful runtime learning or installed improvement (RT-RTE-product-release).

Limitations

Limitation Affected SRC IDs and record citations Inspected boundary Conclusion prevented Evidence that would resolve it
No execution or causal comparison evidence SRC-1; RT-RTE-query-search, MEM-RTE-placement-feedback, RT-RTE-product-release Frozen implementation, documentation and workflow declarations only Successful operation, retrieval/answer benefit, exercised self-improvement, successful recovery or passing builds Registered run artifacts and controlled comparisons with attributable changes and outcomes
Post-edit watcher suppression is not fully traced in the analyst account; the verifier identifies matching-event skipping SRC-1; RT-RTE-note-admission, RT-RTE-index-refresh, report verification limits Edit/rewrite disk and mtime updates, adapter record_write and watcher Changed-event suppression Automatic post-edit search freshness and repair timing Full edit-to-derived-index progression, including suppression alternatives, plus freshness traces
Withdrawal can leave diagnostic and other derivatives SRC-1; MEM-OBJ-health-report, MEM-RTE-note-withdrawal, EPI-RTE-health-report, report verification limits Principal retrieval purge versus source-path unresolved-link rebuilding; differing archive/soft/hard-delete paths Complete diagnostic freshness, complete derivative erasure or retraction of already returned context Auxiliary-table lifecycle tracing and withdrawal/rebuild runs showing all affected consumers
Imported origin and human control are unresolved SRC-1; MEM-OBJ-vault-notes, RT-RTE-note-admission, RT-RTE-setup-apply, RT-RTE-para-migration Generic file/CLI/MCP/HTTP admission and caller apply decisions Authenticated authorship, source truth, per-content human approval or complete trace provenance Provenance-bearing inputs and explicit recorded content-level decisions
Model contents and downstream clients are outside captured evidence SRC-1; RT-CMP-llama-embed, RT-CMP-llama-orchestrator, RT-CMP-llama-rerank, RT-BAP-agent-skill Local loading/inference wiring and shipped client guidance, not actual weights or conversation loops Exact deployed model behavior, internal theory processing, client compliance or deployed grants/isolation Immutable model artifacts and inspectable client/deployment traces within a newly declared boundary
Centroid writers have incompatible aggregate keys/units; eligibility and benefit remain bounded SRC-1; MEM-OBJ-folder-centroids, MEM-RTE-placement-feedback, EPI-RTE-placement-correction Batch index groups, create/watch adjustments and qualifying moved-note feedback Uniform full-vault mean, global reset, all-move human correction or improved future placement Coherent aggregation contract and implementation, provenance-bearing feedback and attributable placement comparisons
Identity selection loses qualifications and lineage, with separate refresh horizons SRC-1; MEM-OBJ-identity-fact, MEM-RTE-identity-context, EPI-RTE-identity-extract Indexed snippet extraction, tier-1 persistence and formatted delivery Warranted current-state identity, immediate freshness or accepted ampliative knowledge Source-preserving output, scoped semantic acceptance and refresh/expiry evidence
Available supporting paths and telemetry consumers remain partly uninspected SRC-1; MEM-OBJ-cli-event, MEM-OBJ-vault-profile, MEM-RTE-vault-readback, epistemic coverage Telemetry APIs, selected profile/graph/edit/support paths and recorded coverage Exhaustive learning/authority/route inventories, detector correctness or system-complete negatives about evaluation Producer-to-consumer inspection and complete coverage of the specific disputed mechanism

Both accepted verifications report no blockers; profile verification declares no additional limits. The two report-verification limits are carried above. No unresolved cross-report conflict remains in the supplied reconciliation. Source-read log: none; this synthesis uses only supplied members and contracts.