LLM-Wiki-v3 memory report

Type: agentic-system-analyses/types/agentic-system-memory-report.md

Boundary and evidence

The memory boundary covers the shipped source store, proposed and accepted pages, instruction delivery, retrieval derivatives, review/withdrawal, query generation and evaluation. It follows the whole-system boundary, not an imagined MCP deployment (boundary). All source citations below are SRC-1 at the reviewed commit. Implementation findings are static; doctrine is labelled separately. No target code, tests, providers or examples were executed.

Direct reads covered src/wiki/cli/__init__.py, src/wiki/extract.py, src/wiki/ingest/pipeline.py, src/wiki/ingest/hashing.py, src/wiki/ingest/chunk.py, src/wiki/ingest/diff.py, src/wiki/review.py, src/wiki/validate.py, src/wiki/audit.py, src/wiki/config.py, src/wiki/retrieve/store.py, src/wiki/retrieve/query.py, src/wiki/retrieve/rebuild.py, src/wiki/retrieve/bm25.py, src/wiki/retrieve/dense.py, src/wiki/retrieve/graph.py, src/wiki/retrieve/rerank.py, src/wiki/eval/baseline_retriever.py, src/wiki/eval/harness.py, scripts/pre-commit, AGENTS.md and the sample knowledge/entities/ada-lovelace.md. The seed driver's complete main was read; individual page specifications were not audited. Function/call-site searches covered src/, the seed driver, README.md and Makefile. Span-check internals, schema contracts, tracked inventory and saved baseline characterization rely on the supplied boundary/runtime, not new complete reads.

Raw documents and derived index artifacts are not supplied in this tracked snapshot; provider state and downloaded model artifacts are outside the available source implementation. These gaps prevent replay of provenance, inspection of actual stored vectors and claims about provider retention. Uninspected seed specifications and most corpus bodies prevent a corpus-wide content-quality judgment. Human interpretation after browsing and downstream answering-agent prompt construction are excluded responsibilities, not implemented consumers inferred from the retrieval label.

Entry point / memory operation Source paths (SRC-1) Coverage and evidence basis
Ingest, raw reload, chunk context, escalation src/wiki/cli/__init__.py, src/wiki/ingest/pipeline.py, src/wiki/ingest/hashing.py, src/wiki/ingest/chunk.py, src/wiki/extract.py Direct; RT-RTE-source-ingest, MEM-OBJ-raw-source, annotations below
Root instruction delivery / structured proposal tool AGENTS.md, src/wiki/extract.py, src/wiki/ingest/pipeline.py Direct; RT-BAP-ingest-instructions; proposal tool returns data, not arbitrary filesystem operations
Quote/schema/span checks, pending manifest, changed-body flag src/wiki/ingest/pipeline.py, src/wiki/validate.py, src/wiki/ingest/diff.py, src/wiki/ingest/spancheck.py Direct except span-check internals supplied by RT-CLM-provenance-policy; MEM-OBJ-ingest-manifest
Review edit/accept/reject/skip; callable accept/reject src/wiki/cli/__init__.py, src/wiki/review.py Direct; RT-RTE-page-review; file move can replace current content
Validation commands and optional Git hook src/wiki/validate.py, scripts/pre-commit, src/wiki/cli/__init__.py Direct; structural validation, not span rechecking; RT-RTE-page-review
Curated seed direct writes and temporary-file cleanup scripts/seed_corpus.py Direct main; RT-RTE-curated-seed; page-spec correctness uninspected
Rebuild and exposed component build/search operations src/wiki/retrieve/rebuild.py, src/wiki/retrieve/store.py, src/wiki/retrieve/bm25.py, src/wiki/retrieve/dense.py, src/wiki/retrieve/graph.py Direct; RT-RTE-index-query; three separately replaceable derivatives below
Query, adapters, optional rerank, graph neighbors src/wiki/retrieve/query.py, src/wiki/retrieve/rerank.py, src/wiki/retrieve/graph.py Direct; RT-RTE-index-query; storage APIs are not proof of an external deployed consumer
Retrieval baseline direct corpus loading, component evaluation, ingest evaluation src/wiki/eval/baseline_retriever.py, src/wiki/eval/harness.py, src/wiki/cli/__init__.py Direct; RT-RTE-eval-report, including alternative non-index read-back
Bootstrap queries, caller-selectable output src/wiki/cli/__init__.py Direct; RT-RTE-query-bootstrap; distinct default staging and possible direct active-dataset write
Audit and evaluation artifacts src/wiki/audit.py, src/wiki/eval/harness.py, src/wiki/cli/__init__.py Direct producers/consumers; MEM-OBJ-audit-log, MEM-OBJ-eval-results; no automatic policy revision shown
Browsing catalog, source/note namespaces, MCP/compile/maintenance labels knowledge/_index.md, schema/namespaces.yaml, README.md, Makefile, src/wiki/cli/__init__.py Catalog/registry from supplied boundary; CLI direct and source search. Registered directories are loaded generically. No inspected CLI compile/MCP/supersede command; labels alone do not establish autonomous maintenance or stored query-answer reuse

Core ideas

  1. Source prose becomes localized pages with source-span pointers, not a remembered conversation. The retained page can preserve claims and evidence locations without preserving why a model selected or paraphrased them. Existing-corpus content is not fed into the extraction invocation, although later code compares same-ID bodies (RT-RTE-source-ingest; SRC-1, src/wiki/extract.py, src/wiki/ingest/diff.py).
  2. Admission is path-specific. Interactive review supplies a human content decision, but callable acceptance and the curated seed driver have different controls. Starting seed or ingest is not per-page approval. Structural checks, lexical evidence checks and human correctness are different warrants (RT-RTE-page-review, RT-RTE-curated-seed, RT-CLM-provenance-policy).
  3. Content and access derivatives have different lifetimes. Knowledge edits do not rebuild indexes. Current-page filtering is real at load/build, but does not universally remove stale identifiers from query output. The active rerank branch is an important counterexample to a blanket claim that all branches are unfiltered (RT-RTE-index-query; SRC-1, src/wiki/retrieve/query.py).
  4. Retrieval selects identifiers, not a budgeted answering prompt. By contrast, bootstrap explicitly supplies retained page bodies to a later model call. That is an implemented memory-to-model path, but its purpose is candidate evaluation data, not answering the user's question (RT-RTE-query-bootstrap; SRC-1, src/wiki/cli/__init__.py).

Shared records

Components

none declared in this member

Operative objects

MEM-OBJ-raw-source

Label: Retained raw source content

Source-native identity: raw/<sha256>/source<suffix> (or source). Substrate: filesystem bytes, decoded UTF-8 by load_raw_text. Document prose is natural-language source material; its hash identity is symbolic, not a confidence score. Lineage: original file bytes copied before extraction; the seed driver supplies authored text through temporary files. Consumers: pipeline quote location and source checking, plus later CLI ingest evaluation. The source text is an evidence reference for lexical checks, not an authoritative truth oracle. Raw retention survives pending rejection. No extraction reasoning is stored here. Distinct from the source-ingest route and its manifest; closest supplied record is RT-RTE-source-ingest. SRC-1, src/wiki/ingest/hashing.py, src/wiki/ingest/pipeline.py, src/wiki/cli/__init__.py, scripts/seed_corpus.py.

(raw_dir / stored_name).write_bytes(data) --- src/wiki/ingest/hashing.py

return candidates[0].read_text(encoding="utf-8") --- src/wiki/ingest/hashing.py

MEM-OBJ-raw-meta

Label: Raw source access metadata

Source-native identity: raw/<sha256>/meta.json. Symbolic JSON on filesystem: source ID, origin, filenames, timestamps and byte count. It is neither the source prose nor a readable summary of it. Software constructs it from bytes and caller origin. Its existence makes later store_raw calls return early; the loader instead discovers a source* file. Thus a metadata sidecar can suppress re-storage without proving that its body is intact. Actual stored-body integrity was not replayed. No independent human content gate is imposed by store_raw. Distinct metadata object associated with RT-RTE-source-ingest. SRC-1, src/wiki/ingest/hashing.py.

if (raw_dir / "meta.json").exists(): return sha, raw_dir --- src/wiki/ingest/hashing.py

MEM-OBJ-page-body

Label: Proposed and admitted page prose

Source-native identity: Markdown body of ProposedPage / PageRecord, staged in pending/<id>.md, then placed under registry namespace directories in knowledge/. Natural-language claims remain natural language when humans or bootstrap interpret them; embedded citation/wikilink markers have separate fixed consumers. Lineage: model paraphrase/extraction, human review edits, or curated seed specifications. Curation chooses content rather than merely copying raw traces. The sample retained knowledge/entities/ada-lovelace.md has three prose claims, citation markers and extractor: human metadata; this is a source-authored artifact, not evidence that this analysis observed seed execution. Extraction/admission reasons and rejected alternative wording are not fields of the retained page.

Later consumers include search_text for indexes/reranking, baseline lexical evaluation, ingest faithfulness and bootstrap's model prompt. Bodies are not returned by retrieve. Distinct material object crossing several supplied routes, not a duplicate route: RT-RTE-source-ingest, RT-RTE-page-review, RT-RTE-curated-seed, RT-RTE-query-bootstrap. SRC-1, src/wiki/ingest/pipeline.py, src/wiki/retrieve/store.py, src/wiki/cli/__init__.py, knowledge/entities/ada-lovelace.md.

parts = [self.id.replace("-", " "), self.body] --- src/wiki/retrieve/store.py

MEM-OBJ-page-routing

Label: Page selection and relation metadata

Source-native identity: page filename/ID and frontmatter type, superseded_by, supersedes, related, aliases, tags, parents, definition. YAML in the same Markdown files; localized symbolic IDs, flags and edge records are separated here from prose content. Alias/tag/definition text also becomes lexical or embedding input, not instruction authority. Namespace/type chooses acceptance destination; the filename stem becomes loader identity; superseded_by excludes current pages by default. Typed edges and body wikilinks become graph adjacency. A supersedes declaration alone does not automatically set the predecessor's superseded_by. The loader does not call schema validation. Same-ID maps and index primary keys do not establish global semantic uniqueness across files.

This object spans review and retrieval rather than being part of exactly one supplied route; closest records are RT-RTE-page-review, RT-RTE-index-query, RT-CLM-history-policy. SRC-1, src/wiki/review.py, src/wiki/retrieve/store.py, src/wiki/retrieve/graph.py, src/wiki/retrieve/query.py.

if not include_superseded and page.meta.get("superseded_by"): continue --- src/wiki/retrieve/store.py

MEM-OBJ-page-sources

Label: Page provenance pointers

Source-native identity: sources array and body [^src:N] references. Symbolic YAML/Markdown persisted with the page, recording raw source ID, character span, extraction timestamp and extractor label. Derived by locating model-proposed quotes, or seed-authored quotes, in retained source text. Quote strings and fuzzy alignment scores are not retained in these entries; a source pointer is not the original quote display or an explanation of entailment. Checks consume spans and body markers; query output reduces provenance to source IDs, omitting spans and claim-to-source correspondence. Bootstrap passes the body but not this array. Those are consequential downstream omissions, not evidence that initial pointers did not exist.

Distinct operative part crossing RT-RTE-source-ingest, RT-RTE-index-query and RT-RTE-eval-report, not another copy of their routes. SRC-1, src/wiki/ingest/pipeline.py, src/wiki/retrieve/query.py, src/wiki/cli/__init__.py; enforcement limits in RT-CLM-provenance-policy.

{"source_id": source_id, "span": span, "extracted_at": now, "extractor": model} --- src/wiki/ingest/pipeline.py

out.append(str(s["source_id"])) --- src/wiki/retrieve/query.py

MEM-OBJ-ingest-manifest

Label: Ingest manifest and rejection diagnostics

Source-native identity: pending/<source_id>.manifest.json. Symbolic JSON filesystem artifact with usage, model, chunk count, staged IDs/paths/status/contradiction flags, and rejected IDs/issues. This is derived process evidence, not admitted knowledge. New-versus-patch and changed-body flags are software-produced; they do not adjudicate contradiction. CLI immediately prints it. Later review enumerates only Markdown files, so does not automatically display the manifest's warnings or use rejected diagnostics to revise proposals. Same-source ingestion overwrites the manifest. Distinct artifact of RT-RTE-source-ingest, not a duplicate of that route. SRC-1, src/wiki/ingest/pipeline.py, src/wiki/ingest/diff.py, src/wiki/review.py, src/wiki/cli/__init__.py.

return sorted((root / "pending").glob("*.md")) --- src/wiki/review.py

MEM-OBJ-bm25

Label: Lexical search derivative

Source-native identity: indexes/bm25.sqlite, FTS5 pages(page_id, text). Filesystem SQLite, symbolic index structures over derived search text (ID, body and selected fields), not model parameters. build can take caller-supplied PageRecord lists or default to current page loading. Rebuild supplies one current-page load. Search applies OR-of-terms FTS matching, yielding IDs and scores; the text affects ranking, not instruction following. Whole database unlink/recreation invalidates this derivative independently of knowledge changes and the other databases. Related supplied route: RT-RTE-index-query; this is its lexical object, not a second route. SRC-1, src/wiki/retrieve/bm25.py, src/wiki/retrieve/store.py, src/wiki/retrieve/rebuild.py.

con.execute("CREATE VIRTUAL TABLE pages USING fts5(page_id UNINDEXED, text)") --- src/wiki/retrieve/bm25.py

MEM-OBJ-graph

Label: Retained graph derivative

Source-native identity: indexes/graph.sqlite, nodes and edges. Symbolic SQLite tables, including serialized frontmatter and paths as node metadata, and typed/frontmatter or body-wikilink edges as adjacency. These are separately readable structured records, not an opaque vector or a natural-language graph summary. Software assigns typed edges weight 1.0 and wikilinks 0.5; traversal actually ranks by hops, not these stored confidence-like weights. Undirected traversal can reach missing targets, because insertion does not enforce target existence. Consumers: node enumeration for query seeds, neighbors/walk for retrieval. Exposed neighbors is a storage/query capability; no separate deployed caller is inferred. Rebuild replaces this database independently. Distinct derivative of RT-RTE-index-query. SRC-1, src/wiki/retrieve/graph.py, src/wiki/retrieve/query.py.

scores[other] = max(scores.get(other, 0.0), 1.0 / (hop + 1)) --- src/wiki/retrieve/graph.py

MEM-OBJ-vectors

Label: Retained page embeddings

Source-native identity: indexes/vectors.sqlite, vectors(page_id, dim, vec). Distributed numerical representations stored as normalized packed-float BLOBs, with symbolic page IDs/dimensions. Lineage: optional BGE inference over search_text, not parameter training or retained source-language rationale. Consumers unpack vectors for cosine/dot-product comparison against a current query embedding. IDs/dimensions and the build manifest's model name are metadata, not a readable semantic summary of a vector. No supplied stored vectors establish actual contents. Model artifact provenance remains unresolved beyond the configured name; component fixity is described by RT-CMP-dense-embedding. Database replacement is independent of BM25/graph and does not automatically follow page edits. Distinct object associated with RT-RTE-index-query. SRC-1, src/wiki/retrieve/dense.py, src/wiki/retrieve/rebuild.py.

con.execute("CREATE TABLE vectors (page_id TEXT PRIMARY KEY, dim INTEGER, vec BLOB)") --- src/wiki/retrieve/dense.py

MEM-OBJ-audit-log

Label: Operation audit records

Source-native identity: audit/log.jsonl. Symbolic append-only-in-this-writer JSONL records: timestamp, operation, actor, hashes, output summary, model, usage, duration and error/success. Summaries are readable displays of operation metadata, not complete source content, model responses or retained model reasoning. Ingest and review produce records; empty tracked audit content supplies no observed episode. Inspection/search of src/ found writers, not a later decision consumer of this log. Therefore log retention alone supplies no demonstrated trace-fed behavior update. A generic caller of append remains a capability, not a shipped learning loop. Distinct artifact associated with RT-RTE-source-ingest and RT-RTE-page-review. SRC-1, src/wiki/audit.py, src/wiki/ingest/pipeline.py, src/wiki/review.py; empty artifact basis from boundary.

f.write(json.dumps(rec, ensure_ascii=False) + "\n") --- src/wiki/audit.py

MEM-OBJ-eval-queries

Label: Evaluation queries and expected IDs

Source-native identity: evals/datasets/queries.jsonl and default queries.bootstrap.jsonl. Filesystem JSONL; natural-language questions with symbolic expected page IDs/type. Active dataset initialization/curator decisions were not established by inspecting its producer history. Subsequent bootstrap transformation is known: software supplies each page body to a model and assigns each nonempty generated line that page stem as its expected ID. Human review/merge is requested, not mechanically required for every output path. Later load_dataset feeds expected IDs to metric computation, so labels have software scoring authority without being semantic truth guarantees. Active and candidate files have different default consumers; selected output may alias the active path. Related supplied routes: RT-RTE-query-bootstrap, RT-RTE-eval-report; distinct object, not duplicate route. SRC-1, src/wiki/cli/__init__.py, src/wiki/eval/harness.py.

DATASET_RELPATH = ("evals", "datasets", "queries.jsonl") --- src/wiki/eval/harness.py

MEM-OBJ-eval-results

Label: Evaluation reports and build description

Source-native identities: evals/baselines/<name>.json, timestamped Markdown reports, components.json, and indexes/manifest.json. These are software-produced descriptive outputs, grouped here because their inspected role is reporting rather than content admission. Symbolic counts, ranks, metrics and configuration fields persist as JSON; Markdown renders human-readable results. Evaluation JSON retains per-query retrieved and expected IDs; Markdown displays a subset of retrieved IDs. Build metadata does not contain a corpus digest or enforce query-time freshness. Latest named JSON can be replaced; timestamps can retain separate reports. Human inspection is afforded, not an observed adoption event. No inspected query/evaluation path automatically reads these reports as a policy or promotion gate. Distinct artifacts associated with RT-RTE-eval-report and RT-RTE-index-query. SRC-1, src/wiki/eval/harness.py, src/wiki/retrieve/rebuild.py, src/wiki/cli/__init__.py.

(out_dir / f"{name}.json").write_text(json.dumps(payload, indent=2), encoding="utf-8") --- src/wiki/eval/harness.py

Routes

none declared in this member

Claims

none declared in this member

Evidenced absences

none declared in this member

Behavioral-authority paths

none declared in this member

Annotations

On RT-RTE-source-ingest

Memory context: code selects approximately 1,000-token source chunks with approximately 100-token overlap using four-character token estimates. Paragraph/sentence accumulation plus overlap makes this a target, not a strict token-window maximum. Each Anthropic call receives fresh root instructions, source ID/offsets and one chunk; output is capped at 4,096 tokens by default. No prior chunks' proposals, corpus bodies, audit history or rejected-attempt critiques are added to the next call. The host retains whole raw text for span location; only proposals escape the model-call frame into pending pages. This resembles isolated frames with returned values, not heap pointers dereferenceable by the model. There is no extraction reload tool in the proposed-page schema. Raw text can be reloaded by host code in later ingestion/evaluation, not on demand by this model. SRC-1, src/wiki/ingest/chunk.py, src/wiki/config.py, src/wiki/extract.py, src/wiki/ingest/pipeline.py.

messages=[{"role": "user", "content": chunk.text}], --- src/wiki/extract.py

First all-valid nonempty output wins per chunk; otherwise the final attempt's individually valid pages may still stage. The first ID occurrence wins cross-chunk deduplication even if a later duplicate would have better content. These are software curation rules, not human approval or semantic resolution. Retained issues go to the manifest; failed-attempt reasons are not a durable critique consumed by the escalation model. See MEM-OBJ-ingest-manifest. SRC-1, src/wiki/ingest/pipeline.py; supporting selection passage in the supplied route.

On RT-RTE-page-review

The human's default consumption is an 800-character pending-file preview, not full provenance replay. The optional editor can show/change the full file, but accept_page does not re-run schema/span checks. A review invocation reads pending Markdown, not the ingest manifest that carries changed-body warnings. Acceptance moves the whole file into knowledge and can overwrite its predecessor; rejection deletes only that pending file. Raw sources, manifests and earlier admitted knowledge are not automatically withdrawn by rejection. Optional Git commit gives a possible history/recovery substrate, not transactional rollback after the move. SRC-1, src/wiki/cli/__init__.py, src/wiki/review.py, scripts/pre-commit; supporting move passage in the supplied route.

typer.echo(page_path.read_text(encoding="utf-8")[:800]) --- src/wiki/cli/__init__.py

On RT-RTE-curated-seed

Source text and page/quote specifications originate with script authors; no model extraction or per-content operator decision is added by main. Software validates before each write and stops on failure; prior writes remain. Temporary _seed_source_* files are deleted after raw retention, not a withdrawal of raw evidence. Direct writes bypass pending and review, making a universal human-admission claim false. SRC-1, scripts/seed_corpus.py; validation/write passage in the supplied route.

finally: tmp.unlink(missing_ok=True) --- scripts/seed_corpus.py

On RT-RTE-index-query

Read-back is request-led: operator query or evaluator adapter supplies query text; software selects from prior retained derivatives. BM25/dense select up to 50 IDs each, graph seeds derive from query/ID/alias token overlap and two-hop adjacency, then fusion keeps 30, with default final k=10. This is a candidate-count budget, not a downstream prompt-token budget. Optional reranker receives query plus current candidate search text, not source raw bodies. Fresh aliases can affect graph seeds even while graph/index content is stale. Returned source-ID provenance omits stored spans. No query path compiles an answering prompt or returns page body text. SRC-1, src/wiki/retrieve/query.py, src/wiki/retrieve/store.py, src/wiki/retrieve/rerank.py; selection/freshness passages in the supplied route.

Component build(root, pages=...) operations also permit supplied page lists; their own default loader filter is not an invariant for arbitrary library callers. Graph neighbor calls and low-level search APIs expose retained state but do not prove an additional deployed external-agent route. Dense/rerank consumer versions and uninspected artifact resolution remain as recorded in RT-CMP-dense-embedding and RT-CMP-cross-encoder. SRC-1, src/wiki/retrieve/bm25.py, src/wiki/retrieve/dense.py, src/wiki/retrieve/graph.py.

On RT-RTE-eval-report

There are distinct later corpus consumers, not only the index-backed query route. wiki eval retrieval constructs BaselineRetriever, which loads current namespace files once into in-memory token counters and ranks matching terms with a log-frequency tie bonus. It defaults to excluding superseded pages without needing persisted indexes. eval components instead uses query adapters and their index freshness limits. eval ingest iterates registered files without the current-page filter, loads raw sources, skips pages lacking sources or available raw text, and prints lexical faithfulness; it does not remove failing pages. No generated answer is judged here. SRC-1, src/wiki/eval/baseline_retriever.py, src/wiki/cli/__init__.py, src/wiki/eval/harness.py.

self.docs = load_corpus(root) self.counts: list[Counter] = [Counter(tokenize(text)) for , text in self.docs] --- src/wiki/eval/baseline_retriever.py

Evaluation transforms query/outcome pairs into persisted reports, but the inspected CLI/harness offers no subsequent automatic read of reports to alter the retriever or retained assertions. A report is derived from operation-like results; that does not alone make it durable behavior-shaping trace learning. Expected IDs retain scoring authority at the evaluator, not authority to certify page truth. SRC-1, src/wiki/eval/harness.py, src/wiki/cli/__init__.py; reporting-only passage in the supplied route.

On RT-RTE-query-bootstrap

This later model invocation receives retained page.body in a user message. Full frontmatter, provenance array, raw evidence, manifest warnings and extractor reasoning are omitted. Every registered Markdown page participates, including superseded ones; per-page input has no explicit body truncation/token budget. Response cap is 256 tokens. Code writes every nonempty line and supplies the expected ID itself; requested per_page is guidance, not enforced output count. This body has content-generating influence through model interpretation, not system-instruction force. Actual compliance or benefit is unobserved. SRC-1, src/wiki/cli/__init__.py.

f"answer. Return one query per line, no numbering.\n\nPAGE:\n{page.body}" --- src/wiki/cli/__init__.py

On RT-BAP-ingest-instructions

Root instruction text is static shipped guidance loaded into each extraction request, not itself read-back of accumulated experience. Its authority is natural-language system guidance; tool schema and validators have separate symbolic force. The inspected route does not automatically revise instructions from audit or evaluation. The root file's initial authorship history and provider-internal retained state are not established. SRC-1, AGENTS.md, src/wiki/ingest/pipeline.py, src/wiki/extract.py; source passages in the supplied authority record.

Write side

The acquisition/curation chain is raw bytes (MEM-OBJ-raw-source) → chunk-isolated model proposal → located quote pointers and software checks → pending page and manifest (MEM-OBJ-ingest-manifest) → reviewed move or rejection. Human initiation supplies a document, not approval of each model claim. Software staging admits pages with no accumulated issues; the human interactive review is a later decision. Source trust remains bounded by quote matching and token overlap, not semantic adjudication (RT-CLM-provenance-policy).

The separate seed chain is authored source/specification → shared builder/checks → direct knowledge write. Callable acceptance merely checks type destination, then moves content; optional hook checks structural validity after movement. These alternative admission surfaces prevent treating the curated CLI protocol as a global write authorization boundary (RT-RTE-curated-seed, RT-RTE-page-review).

Maintenance has separate effects. Changed-body diff creates a manifest warning, not an adjudicated contradiction or automatic supersession. superseded_by changes current-load membership; it does not physically erase old pages. Reject deletes pending text but leaves raw and manifest evidence. Same-name acceptance/seed can replace retained content. Explicit rebuilding replaces indexes independently and does not undo earlier source/page writes. Root doctrine asks to preserve history, but actual replacement is a source-supported falsifier of an invariant reading (RT-CLM-history-policy; SRC-1, src/wiki/ingest/diff.py, src/wiki/review.py, src/wiki/retrieve/rebuild.py).

No compaction/checkpoint mechanism is required to explain the inspected extraction frame: each call is fresh. Source-to-page reduction is content curation, not conversation summarization. Audit and manifests preserve selected process facts/diagnostics; indexes preserve access representations; evaluation reports preserve measurements. None of those artifacts by itself supplies a trace → automatic durable behavioral revision → later policy consumer chain in the inspected writers and consumers. In contrast bootstrap's generated rows can enter a later evaluator, by human merge or an output path naming the active dataset. This is a concrete content-to-evaluation-data transformation, not proof of improved capacity or a critique/revision loop. Reasons for source claims survive only insofar as the authored prose states them and pointers retain evidence; model selection rationale is not reconstructed or later read by these routes (SRC-1, src/wiki/audit.py, src/wiki/ingest/pipeline.py, src/wiki/eval/harness.py, src/wiki/cli/__init__.py).

Read-back

Retained input → actual later consumer Trigger / selector / delivery Authority and limit
Raw source → later ingest or CLI ingest evaluator Source ID selects filesystem raw text; whole text reaches host checks Lexical evidence reference, not model instructions or independent truth oracle; absent raw bodies prevent replay (MEM-OBJ-raw-source)
Pending Markdown → review human / acceptance primitive Review invocation enumerates sorted Markdown; preview/editor, then chosen move/delete Human content decision on interactive path; manifest reasons not automatically read (RT-RTE-page-review)
Admitted prose and fields → builders and baseline evaluator Explicit rebuild loads current pages; baseline constructor separately loads current corpus Text/metadata shapes ranking and corpus membership; neither is an answering agent (RT-RTE-index-query, RT-RTE-eval-report)
Persisted lexical, graph, vector derivatives → query/evaluator adapters Query-led selection and fusion; rerank optionally sees current search text Access/ranking authority. Return has IDs/scores/paths/source IDs only; no verified body delivery to a downstream agent (RT-RTE-index-query)
Page bodies → bootstrap model → retained candidate rows → later evaluator Operator invokes all-page iteration; user-message body; default candidates need merge, chosen active output need not Model-interpreted content influence, then symbolic expected-ID scoring authority; not automatic semantic label verification (RT-RTE-query-bootstrap, MEM-OBJ-eval-queries)
Audit/manifests/reports → unspecified later operator inspection Files persist; CLI immediately prints selected fields Afforded inspection is not evidence of automatic later policy use. Reports and logs do not establish a learned update (MEM-OBJ-audit-log, MEM-OBJ-eval-results)

No inspected route is an independent unsolicited push of selected retained knowledge into an answering agent. Bootstrap is code-controlled delivery inside an operator-requested generation task, not evidence for the unshipped MCP/context compiler. Static extraction instructions remain working-context control but are excluded from accumulated read-back under the record contract (SRC-1, src/wiki/cli/__init__.py, src/wiki/extract.py; boundary).

Integration issues

  • Clarification, not correction: RT-RTE-eval-report encompasses two retrieval consumers. The direct baseline loader is not index-backed and honors current-page exclusion at construction. Component evaluation inherits index-query limitations. Evidence: SRC-1, src/wiki/eval/baseline_retriever.py, src/wiki/cli/__init__.py; annotation supplies the additional passage. A reconciliation should not merge these into one index-only read-back claim.
  • Admission-warning delivery limit: MEM-OBJ-ingest-manifest and RT-RTE-page-review establish that warning flags print on ingestion, but review only loads Markdown. The later reviewer is not guaranteed to see the stored changed-body warning. This qualifies any inference from retained diagnostics to later criticism; no supplied fact needs replacement.
  • Authority omission: MEM-OBJ-page-sources, RT-RTE-index-query and RT-RTE-query-bootstrap concern different delivery channels. Query reduces pointers to source IDs; bootstrap omits the source array entirely. Retained provenance must not be projected intact into either consumer.
  • No new declaration duplicates a supplied referent: runtime has no operative-object declarations. The objects here are material stores/parts, while the closest supplied records are routes, policy claims or model components. Route and instruction-authority findings use annotations rather than replacement declarations. The grouped reporting object is a container for descriptive outputs, not a claim of identical storage or invalidation.
  • Unresolved initialization/provenance: active dataset authoring/admission history, individual seed-page correctness, most corpus contents, actual raw-body lineage and external model artifacts remain unestablished. These limit dataset trust, corpus-wide provenance and actual numerical-state judgments, not the known subsequent transformations (MEM-OBJ-eval-queries, MEM-OBJ-page-body, MEM-OBJ-vectors).
  • Unresolved deployment/use: downstream answering consumer and provider retention are outside inspected wiring; actual human review, report adoption, component availability and behavior changes are unobserved. No memory benefit, semantic fidelity or exercised trace-learning conclusion follows solely from persistence (RT-RTE-index-query, RT-RTE-query-bootstrap, MEM-OBJ-audit-log).

Limitations and checks

Source HEAD was rechecked as 267541db838cbca757a112bd0cfa47fa61eb5fb2; source status was clean. The report preserves the supplied run ID, source identity and reviewed boundary. Method basis: supplied memory type, job instruction, collection rules, worker rules and complete record contract. Source reads and searches stayed within SRC-1; no new source identity or execution evidence was introduced.

The falsifier checks specifically examined direct seed admission, edited acceptance, baseline direct loading, superseded-page bootstrap, stale fused returns versus active rerank filtering, graph targets and metadata-triggered raw-store idempotency. They support path-specific conclusions rather than uniform trust/admission/currentness claims. Static evidence establishes wiring, not activation or benefit. Corpus/schema/span-check details not directly audited remain attributed to supplied findings or explicitly limited above.

Deterministic validation: commonplace-run validate-output passed for this invocation. This checks form, references, identities and quotation occurrence, not semantic adequacy or job acceptance.