Nemsy report verification

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

Verification

The supplied reports support a bounded implementation account. The previous citation read-back blocker is repaired, including its dependent characterization. I read the complete supplied members, correction answers and structural check. Only the epistemic answers contain a correction argument; runtime, memory and workflow answers are empty. The structural check reports none, so there is no structural failure to route. I judged the current findings afresh against SRC-1 rather than accepting either that answer or the previous verification as evidence of correctness.

Git HEAD equals the reviewed revision and short status is empty. The tracked tree agrees with the boundary. The material product drivers and retention/consumption responsibilities are included; the inspected tree revealed no additional excluded product responsibility requiring a boundary change. Source inspection below supplies implementation and doctrine/design evidence only. No target code, test, example, provider call or runtime fixture was executed.

Runtime and workflow

I independently traced the script registrations, CLI dispatch and inline commands, complete agent operations, storage functions and Web handlers (SRC-1: pyproject.toml, src/nemsy/cli.py, src/nemsy/agent.py, src/nemsy/vault.py, src/nemsy/web.py). RT-RTE-document-ingest correctly distinguishes caller selection, model proposal, delimiter admission, page/index writes and subsequent status recording. I checked both streaming and full-response progression. Neither validates the generated propositions. Direct-file collection returns before directory exclusion checks; HTTP direct-file ingestion bypasses collection altogether. Explicit CLI paths and free HTTP path strings establish reachability of these alternate branches. HTTP force is unused. Directory exclusions therefore cannot support a universal non-ingestion guarantee.

Empty-file ledger recording precedes the CLI dry-run return. Missing SUMMARY returns None, but the enclosing ingest still logs and records the source; the CLI wrapper returns True without testing that page result. The hash status function does not test page existence. The workflow recovery account correctly follows that source-supported sequence through to a skipped unchanged retry. Its representative workflow is a human-triggered ingest followed by another human-triggered query, not an automatic successor loop. Serial batch awaits allow an earlier page to enter a later file's fresh recency window, but exceptions do not become a continue-on-every-error recovery protocol. The reports correctly distinguish visible output, a returned durable page path and a completed-call counter (SRC-1: src/nemsy/cli.py, src/nemsy/agent.py, src/nemsy/vault.py).

RT-RTE-wiki-answer, RT-RTE-conversation-chat, RT-RTE-answer-archive and RT-RTE-insight-save preserve caller-specific context and persistence controls. I checked the CLI session snapshot, inline query reuse, positive max_turns trimming and default zero; Web's fresh per-request loads and independently constructed prompts; and browser history, mode switching and save construction. Browser Wiki mode omits history from that request without clearing the visible array. Leaving the Chat view instead unmounts local state. Save constructs a new request from selected history without loading fresh Wiki text. Browser archive includes preceding messages and trusts HTTP success without checking wiki_page (SRC-1: src/nemsy/cli.py, src/nemsy/agent.py, src/nemsy/web.py, frontend/src/views/Chat.tsx, frontend/src/App.tsx).

The explicit ordinary archive flag, not ARCHIVABLE alone, admits a query answer. HTTP query never consumes its archive field. RT-RTE-reasoning-query correctly identifies a reachable tuple-to-string-consumer mismatch: the reasoning wrapper returns text plus usage, while the CLI forwards the tuple to a helper using answer.replace. This predicts an archive failure conditional on provider completion, not an observed incident. Neither workflow nor the epistemic ledger generalizes successful ordinary archiving across that defect (SRC-1: src/nemsy/cli.py, src/nemsy/llm.py, src/nemsy/agent.py).

RT-CMP-deepseek correctly separates remote distributed parameters, unpinned aliases, configurable endpoints and uninspected provider state from local Wiki updates. Inspected SDK calls grant text generation, not a tool dispatcher. RT-BAP-wiki-context and RT-CLM-wiki-grounding treat grounding as model-interpreted policy, not an answer invariant. Page prose in a system prefix is not code-enforced trustworthy knowledge. The runtime's absent endpoint authentication dependencies, public bind address and lexical file-containment check are bounded static observations, not deployed isolation or observed exploitation. A supported path string containing parent segments can pass lexical relative_to without establishing canonical containment; filesystem existence and permissions still constrain access (SRC-1: src/nemsy/llm.py, config/settings.toml, src/nemsy/web.py).

Memory objects and consumers

I checked the writers, encoding, lineage and downstream consumers of MEM-OBJ-source-page, MEM-OBJ-query-page and MEM-OBJ-insight-page. They are different retained Markdown outputs, not distinct learning mechanisms inferred from labels. Source summaries combine source, guidance and selected Wiki; archives retain generated answers with code-made metadata; insights rewrite a mixed user/assistant trace. Source provenance and derivation text are requested rather than verified. Generated pages can become later model input without thereby receiving truth acceptance or demonstrating improved capacity (SRC-1: src/nemsy/agent.py, src/nemsy/schema.py, frontend/src/views/Chat.tsx).

MEM-OBJ-wiki-index and MEM-OBJ-index-guidance correctly distinguish appended navigational index text from ancestor instructions. The loader includes the full index separately, sorts other Markdown pages by mtime, excludes index/log basenames and supplies complete selected files without an input-token budget. It does not follow index links or select page bodies by question. Ancestor guidance is read farthest first and can fail at outside-root relative labeling; the reports do not establish universal ingest containment or local human authorship from the template (SRC-1: src/nemsy/agent.py, src/nemsy/vault.py, config/_index.example.md).

MEM-OBJ-ingest-log, MEM-OBJ-token-log and MEM-OBJ-operation-log correctly distinguish deterministic CLI skip authority, usage accounting and action descriptions from knowledge content. Web source display uses mtime rather than the CLI pending selector's hash test. CLI sources display also uses mtime; the reports do not assert that every CLI status display hashes content. None of these logs installs diagnostic corrections or authenticates page quality (SRC-1: src/nemsy/vault.py, src/nemsy/web.py, src/nemsy/cli.py).

MEM-CLM-storage-lifecycle accurately bounds storage helpers as capabilities. Search over collected source text is not the Wiki-answer selector. Deletion trusts a confirmation argument, has no shipped caller found in the inspected product reference search, and does not repair the index, derivatives or an existing snapshot. Separate page/index/log writes supply no transaction or version restoration. MEM-ABS-history-store is a supported bounded absence: repeated history/cache/browser-storage searches across src and frontend/src found directory setup and sibling ledgers, not a contrary serialization/reload consumer. Direct history and App reads support the in-memory account. Explicit insight saving remains a counterexample to a broader absence of conversation-derived memory, and opaque provider state remains outside this negative (SRC-1: src/nemsy/vault.py, src/nemsy/config.py, src/nemsy/cli.py, frontend/src/views/Chat.tsx, frontend/src/App.tsx).

Epistemic records, correction and reconciliation

I checked every epistemic object against its content and consumer: EPI-OBJ-source-content, EPI-OBJ-summary-content, EPI-OBJ-questions-content, EPI-OBJ-answer-content, EPI-OBJ-insight-content, EPI-OBJ-lint-content and EPI-OBJ-index-content. The inventory, ledger and conclusion do not derive entailment, novelty or acceptance from prompt headings, storage or repeated consumption. EPI-RTE-summary-cleanup is a genuine part of ingestion; the worked deletion example follows the actual regex order. Non-ampliative reshaping/deletion does not imply preservation of all premises (SRC-1: src/nemsy/agent.py).

RT-RTE-wiki-lint supplies advisory model diagnosis without an installed edit or withdrawal. EPI-RTE-smoke-check and EPI-RTE-smoke-disposition distinguish assertion evaluators from the command's exit-result consumer. Writes precede assertions, answer checks permit weak substring alternatives and archive lookup need not attribute the file to the exact question. The statuses correctly describe implemented definitions, not passed runs or normal knowledge admission. The alternate direct test-file runner calls the same test functions, without adding a production truth gate (SRC-1: tests/test_smoke.py, src/nemsy/cli.py). EPI-CLM-knowledge-accumulation faithfully compares README/task intent with one-page generation and index append rather than a general multi-page maintenance executor. No supplied run or intervention establishes exercised self-improvement, iterative content-directed theory revision or improved capacity (SRC-1: README.md, src/nemsy/agent.py).

The correction to EPI-RTE-citation-display is supported. I traced marker extraction/numbering, the actual Chat callback, the resolver and the file endpoint, rather than stopping at the renderer's callback interface. A resolved generated Wiki page can reach a later human browser consumer as current UTF-8 text in JSON. The route need not write that page to deliver accumulated material. Its revised Later read-back field, route prose, ledger objects, coverage and bounded conclusion now preserve that consumer while distinguishing arbitrary static-source viewing, citation-support verification and observed reliance. MEM-RTE-browser-read covers the same citation-delivery branch plus explicit library selection/preview. These descriptions agree and neither promises that every reference resolves (SRC-1: frontend/src/components/MessageContent.tsx, frontend/src/views/Chat.tsx, frontend/src/views/FileLibrary.tsx, src/nemsy/web.py). Minimum load-bearing passages are retained in the corrected epistemic record; the endpoint returns content, not merely a navigation label. The previous blocker is therefore discharged, not moved into Limits.

I checked reconciliation for every identity/overlap disposition, supersession, Part of relation and claimed conflict resolution. Its insight supersession identifies the same generated page without upgrading evidence strength. Summary/questions and index entries can coexist with valid file containers. Answer content spans transient and archived forms and is not identical to the query file. Cleanup's declared Part of ingestion relation is supported. Citation display and browser reading overlap without whole-route identity. The current reconciliation correctly removes the former read-back conflict because both reports now retain file-content delivery, while preserving their different scopes and shared warrant limits. No unresolved competing finding, missing required operative part or malformed conflict needing a separate reconciliation blocker was identified. Workflow's annotations extend existing routes rather than duplicate them.

Omission search and stopping decision

The frozen tree and producer/consumer dependencies selected three consequential questions: whether another shipped caller changes the reported admission controls; whether another memory/context consumer defeats the recency-window or checkpoint account; and whether an evaluator consumes suggestions to install revisions. Independent tracing covered the alternate CLI/Web drivers, browser Chat and FileLibrary calls, citation renderer and file delivery, SSE handling, API client, configuration/schema and smoke definitions. A bounded reference search across src and frontend/src checked history/cache storage, deletion, search, generation, context loading and diagnostic consumers. Focused reads of the Settings and Status request/state logic showed configuration/accounting display, not an additional retention or repair installer (SRC-1: frontend/src/hooks/useSSE.ts, frontend/src/api/client.ts, frontend/src/views/Settings.tsx, frontend/src/views/Status.tsx, src/nemsy/config.py, src/nemsy/schema.py, tests/test_smoke.py).

Those searches preserve the reported alternate-route exceptions, explicit trace-to-insight write, human retained-file read-back and lack of an installed lint-repair consumer in the inspected paths. Further optional expansion stops because each selected question has a supported disposition and no identified material challenge remains without one. This is not exhaustive dependency, deployment or source/bundle-equivalence verification. The reports already withhold those conclusions, provider internals, proposition-level fidelity, actual compliance and causal benefit. Those faithfully scoped uncertainties do not require an additional publication limit or an invented absence finding.

Blockers

none

Limits

none