ClawVault report verification

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

Verification

The pinned reports support a bounded implementation account. No material blocker was found. I read all five reports, the boundary, their types and the shared record contract. The four correction-answer inputs are empty; the structural report-check says none. There is consequently no structural failure to route and no correction argument to adopt without checking. I independently read source at SRC-1, checked checkout HEAD against the frozen revision, and compared the repository's top-level tree with the boundary. I did not execute ClawVault, its tests, examples, benchmarks or providers. The boundary's implementation and doctrine/design layers remain the evidence basis; none of the checks below establishes observed operation or causal benefit.

Runtime and retained representations

I checked every declaration and its load-bearing source anchor, grouping the dispositions below rather than repeating its fields. Separate implementation/operation statuses are warranted: the traced routes are wired, while their operation remains uninspected. There are no declared evidenced-absence records whose search could be mistaken for a complete-system negative.

  • RT-RTE-slot-store, RT-OBJ-vault-documents and MEM-RTE-document-patch: SRC-1 src/plugin/slot.ts and src/lib/vault.ts establish caller content, collision handling, serialization, reload/index effects and body replacement preserving frontmatter. Neither direct storage nor patch traverses turn-capture quality admission. Writes preceding index effects do not establish a transaction. The reports preserve that distinction.
  • RT-RTE-capture-turn: SRC-1 src/capture/service.ts and src/capture/quality.ts confirm assistant-role selection, candidate checking before persistence, the accepted-count cap, staged deduplication, collision retry and conditional synthesis. Confidence, junk, overlap and weighted plausibility are route-local proxies, not factual verification. The forcing-case comparison does not project their protection onto other writers.
  • RT-RTE-prompt-recall, RT-RTE-tool-recall, RT-OBJ-recall-mandate and RT-BAP-system-context: SRC-1 src/openclaw-plugin.ts, src/plugin/hooks/before-prompt-build.ts, src/plugin/vault-context-injector.ts and src/plugin/memory-manager.ts confirm distinct registrations, independent prompt retrieval and recap, short snippets, once-injected cached text, and foreground tool results. Search and detail read have different path and identity selection. The lexical detail-read restriction is not a filesystem sandbox. The unused contextProfile argument does not supply profile selection to the prompt-fetch branch. Privileged context delivery is accurately separated from model compliance.
  • RT-RTE-observe-session, MEM-OBJ-raw-transcripts and MEM-OBJ-observations: SRC-1 src/observer/observer.ts, src/observer/compressor.ts and src/observer/router.ts confirm raw retention before threshold processing, previous observations as compression input, deterministic fallback, buffer clearing before downstream effects, daily writes and routing. Raw strings are not authenticated original host events or a reversible summary lineage. The hooks and both scheduled scripts invoke included shipped drivers; they are not excluded as hypothetical external callers. SRC-1 src/plugin/hooks/observation.ts, src/plugin/hooks/session-lifecycle.ts and src/plugin/clawvault-cli.ts also confirm that CLI launch opt-in does not gate independent fact extraction, checkpointing or reflection. Launch acceptance is not completion before compaction.
  • RT-RTE-python-vault and RT-RTE-peer-sync: SRC-1 python/src/clawvault/vault.py and src/lib/tailscale.ts confirm independent storage/search/wake and direct peer push/pull/deletion. Neither inherits capture admission. The reports correctly withhold helper parity, peer-server authorization and deployed isolation claims.
  • RT-CMP-compressor, RT-CMP-worker-llm, RT-CMP-hosted-embeddings and RT-CMP-hosted-rerank: provider resolution, configurable model aliases and inference requests support the component accounts, not immutable weight identities or provider-internal parameter conclusions. SRC-1 src/lib/maintenance/llm.ts, src/lib/hosted-embeddings.ts, src/lib/hosted-rerank.ts, src/lib/in-process-search.ts and src/lib/search.ts confirm optional query embedding, compatible stored-vector use, reranking, recency selection and qmd alternatives. In-process orchestration does not mean network-free operation.

MEM-OBJ-embedding-cache has an independently checked rebuild producer in SRC-1 src/commands/rebuild-embeddings.ts. Its statement that a tail-only edit need not regenerate the cache is supported. That is not evidence of an actual stale vector. I additionally checked the provider helper: it also limits the effective embedding input, so a non-regeneration event alone cannot establish semantic staleness or loss caused by the cache rather than input truncation. The report expressly claims no stale-vector incident and no full-document freshness guarantee; neither stronger inference is accepted here.

const normalized = text.trim(); --- src/lib/hosted-embeddings.ts

const truncated = normalized.slice(0, 12000); --- src/lib/hosted-embeddings.ts

Admission, maintenance and epistemic force

MEM-OBJ-fact-store, EPI-OBJ-extracted-facts, MEM-RTE-fact-context, EPI-RTE-fact-extraction, EPI-RTE-fact-supersession and EPI-RTE-fact-context were traced through SRC-1 src/plugin/fact-extractor.ts, src/lib/fact-extractor.ts, src/lib/fact-store.ts, src/observer/router.ts and src/commands/context.ts. The fictional-preference counterexample follows from sentence splitting and the unanchored regex; it is a source deduction, not an observed incident. Conflict handling uses value/relation policy without a credibility or timestamp-order test. Active queries exclude validUntil records; save rewrites the map, and IDs can replace entries. The explicit context consumer emits triples and confidence-based rationale, not rawText. The reports correctly separate retained provenance from delivered qualifications, and synchronous routing counts from asynchronous fact persistence.

MEM-RTE-explicit-context was checked against SRC-1 src/commands/context.ts, src/recall/service.ts, src/commands/inject.ts and src/lib/inject-utils.ts. Context profiles and budget assembly, strategy recall, and injectable-item matching are different consumers. The tight-budget structured-return/rendered-text distinction is supported. Strategy verification sorts and exposes sources rather than adjudicating truth. Command injection's default LLM setting differs from its helper's default. None of these establishes automatic plugin consumption of this builder's facts or budget.

For RT-RTE-maintain-inbox and RT-BAP-worker-state, I checked SRC-1 src/commands/maintain.ts, the curator/distiller/janitor workers, src/lib/maintenance/llm.ts and src/lib/maintenance/worker-utils.ts. Sequential worker dispatch, selected model samples, curator allowlisting/fallback, source-linked distilled files, automatic janitor actions and persisted processed hashes support the findings. Dry-run does not suppress dispatcher state writes. Report production alone supplies no later agent consumer. These are computations with selected inputs, not demonstrated autonomous subagent contexts.

RT-RTE-reflect-week and MEM-RTE-observation-archive are supported by SRC-1 src/observer/reflection-service.ts, src/observer/archive.ts and core reindex. Heading checks select a model rewrite or deterministic fallback; they do not check semantic preservation. Prior keys affect later consolidation. Copy/removal and ledger/archive exclusion change ordinary availability without retracting facts, category derivatives or previously delivered text. The claims remain local rather than universal forgetting guarantees.

EPI-RTE-router-admission correctly isolates importance and category duplicate admission in SRC-1 src/observer/router.ts. Routed-list insertion precedes append, and independent fact extraction is outside the threshold loop. The partly untraced task branch is explicitly retained, not silently equated with category append.

EPI-OBJ-entity-profile and EPI-RTE-entity-synthesis were checked against SRC-1 src/entities/synthesis.ts. Heuristic kind, copied newest prefix, finite cooccurrence counts and maximum file mtime have different licenses. Conditional file-domain derivation does not warrant real relationships or mention dates. Existing-profile read-back does not force regeneration. The report does not incorrectly treat all synthesis as either entailed world knowledge or wholly conjectural.

RT-RTE-outbound-filter, EPI-OBJ-outbound-message, EPI-RTE-question-rewrite and EPI-CLM-memory-answer were checked through SRC-1 src/plugin/communication-protocol.ts and src/plugin/hooks/message-sending.ts. The Alice residence/tea contrast faithfully exposes punctuation replacement plus a relevance assertion without an answer test. Cancellation depends on the question detector after rewriting and requires host enforcement. This supports the epistemic mismatch, not a universal claim about all outgoing channels.

MEM-RTE-history-replay and EPI-RTE-replay-import describe the same importer in SRC-1 src/commands/replay.ts: selected normalized exports, date grouping, historical clock, threshold one, process/flush and reflection. Their source-origin, normalizer-fidelity and cross-effect rollback qualifications are warranted.

Workflow, development plane and reconciliation

I independently traced RT-RTE-session-handoff and the workflow account through SRC-1 src/commands/sleep.ts, src/commands/wake.ts, src/commands/recover.ts, src/commands/checkpoint.ts, handoff/recap methods in src/lib/vault.ts, and bin/register-session-lifecycle-commands.js. The checkpoint annotation's alternative durable forms are supported. Handoff persistence precedes secondary computations and Git completion; flag clearing precedes completed wake delivery. Recovery's filename selector differs from recap's modification-time selector. Optional Gemini summary accepts nonempty text without preservation checking. Printed wake output can coexist with exit status one. The selected workflow ends at caller delivery, not resumed-task completion, and does not invent automatic scheduling or semantic handoff approval.

RT-RTE-autoresearch-change, EPI-OBJ-scoring-result, EPI-RTE-fixture-scoring and RT-CLM-autonomous-research were checked against SRC-1 autoresearch/program.md, autoresearch/run.sh, autoresearch/experiment.sh, src/observer/benchmark/runner.ts and src/observer/benchmark/scoring.ts. External-agent editing, strict scalar admission, subset testing, reset on discard rather than all failures, fixture-level provider overrides and editable measurement inputs are supported. The negation contrast follows from token filtering and matching. Formal metric arithmetic does not license semantic correctness. Claimed autonomous iteration, afforded reflection and dormant improvement capacity are not silently promoted to executed theory criticism, learning or production self-improvement. The separate theory-builder condition assessments preserve these distinctions. RT-CLM-structured-memory is supported as storage/context capacity by SRC-1 package.json and the traced routes, not by its slogan as a universal recall guarantee.

I checked every declared Part of relation: observations and entity profiles specialize vault documents; router admission, question rewriting and fixture scoring are stages within their respective observation, outbound and development containers. The reconciliation correctly retains those containers. Both supersessions have referent identity evidence: the extracted-fact objects share one fact store, and both replay routes describe one importer. The combined memory fact/context route remains valid alongside finer epistemic stages, as does explicit multi-source assembly alongside fact-only selection. The workflow's core-store comparison does not identify sleep with the slot entry point. All six memory integration issues receive dispositions. No cross-report disagreement requiring an Unresolved conflict paragraph was found; the source-header/save mismatch and doctrine/script acceptance mismatch are already common findings, not analyst conflicts.

Consequential omission searches and stopping decision

Selection was based on the frozen tree, CLI registrations and producer/consumer dependencies, not only the reports' anchors. I investigated whether alternate consumers could invalidate the prompt-context account, whether additional writers inherited the capture gate, and whether a separate evaluator could invalidate the scoped epistemic conclusion.

The explicit builders, Python client, peer transfer, reset/compaction fact hooks, scripts and observation task branch confirm heterogeneous paths rather than a single admission/read-back pipeline. Additional SRC-1 inspection of src/lib/task-utils.ts and src/lib/project-utils.ts found template/fallback construction and direct file writes; task updates also call status-transition logging. These fit the reports' explicitly incomplete mutation inventory, not a claim that all writes are captured by the declared routes. Exact transition policy and downstream transition-log consumption remain unassessed. The first Limit preserves that incomplete comparison without weakening the supported storage, capture and fact findings.

const transition = options.skipTransition ? null : resolveStatusTransition(previousStatus, newFrontmatter.status); --- src/lib/task-utils.ts

For the separate evaluation path, I searched SRC-1 eval/run_v35_full.py and read its benchmark and answer branches. They confirm per-example adapter construction, session ingestion, query/reader or heuristic answering, and prediction artifacts. This is not the observer fixture scorer or the production plugin. The reports already withhold a complete-system negative about epistemic acceptance and do not use these outputs as independently verified utility evidence. Its full evaluator and retained-result provenance remain outside the checked conclusions, as stated in the second Limit.

adapter.ingest_session(sid, turns, session_timestamp=sdate) --- eval/run_v35_full.py

Further omission expansion stopped because the selected challenges have supported dispositions, the reports do not emit uniform validation, complete withdrawal, exhaustive route coverage or a system-wide absence of acceptance, and no identified alternative contradicts a retained central conclusion. More detailed task transitions, matchers, display parsing, server authorization and external dependencies could improve an inventory or support new comparisons; their mere existence does not justify replacing the supported bounded account with an exhaustive audit.

Blockers

none

Limits

  • The mutation and operational-feedback inventory remains partial. MEM-RTE-explicit-context, EPI-RTE-router-admission and RT-OBJ-vault-documents, together with the memory coverage inventory and reconciliation's integration dispositions, do not fully characterize task/project/template/import edits or task-transition feedback. Source inspection confirms included alternatives, not their complete admission, rationale-retention or later-consumer semantics. Readers should withhold exhaustive write-policy and feedback-route comparisons; the positively traced capture, fact, patch, observation and context routes remain supported.
  • Evaluation coverage remains local to the observer fixture/change-admission account in RT-RTE-autoresearch-change and EPI-RTE-fixture-scoring. The separate evaluation adapter and saved result provenance are not fully assessed by the reports or this verification. Its presence does not defeat the scoped proxy-check findings, but readers should withhold an all-evaluators comparison, a system-complete negative about epistemic acceptance, and any end-to-end plugin utility or causal-improvement inference from those artifacts.