MindBase epistemic report
Type: agentic-system-analyses/types/agentic-system-epistemic-report.md
Source-and-claim boundary
The question is how MindBase acquires or produces truth-apt content, checks it, grants reliance and makes it consequential. The functional inclusions, external host/provider exclusions and frozen SRC-1 identity are those in the boundary Source register. This is a complete repository artifact with a partially traced operational loop, not exhaustive evidence of every shipped route. No target code, tests, examples or providers were executed. All new implementation findings below concern SRC-1 at the reviewed commit; there is no registered observed run or causal experiment.
Public claims assessed are RT-CLM-approved-changes, EPI-CLM-wiki-audit, EPI-CLM-sentence-pruning and EPI-CLM-knowledge-compounds. The session hook's designation of context as curated truth is a reliance label, not an independently checked result: see RT-BAP-session-context.
Coverage distinguishes direct source inspection in this job from provisional supplied findings. Paths in this table are SRC-1 commit-relative anchors, not new sources.
| Entry point or operation | Source path | Coverage and records | Limit or conclusion prevented |
|---|---|---|---|
| Ops contribute/build/research/ask | apps/server/src/ops/runner.ts, apps/server/src/ops/recipes/build.ts, apps/server/src/ops/recipes/research.ts, apps/server/src/ops/gather.ts, schema/query.md |
Supplied RT-RTE-contribute-plan, RT-RTE-build-context, RT-RTE-research-page, RT-RTE-ask-answer; direct recipe/gather reads and selected runner ranges | Individual output truth and model compliance unobserved; ask implementation itself used as supplied evidence |
| Ops lint quote gate | apps/server/src/ops/runner.ts, apps/server/src/ops/gather.ts |
Direct verifyEvidence and runLint reads; EPI-RTE-evidence-quotes, part of RT-RTE-lint-findings | Occurrence does not establish conflict; input caps defeat a whole-wiki guarantee |
| CLI dispatch, ingest and lint | apps/cli/src/index.ts, apps/cli/src/commands/ingest.ts, apps/cli/src/commands/lint.ts, packages/core/src/wiki/lint.ts |
Direct dispatch/caller reads; EPI-RTE-cli-admission | CLI query/init/rebuild implementations not traced; compileL1 inspected only through its opening definitions, not its full planning/execution loop |
| MCP registered tools and health | apps/mcp/src/tools/index.ts, apps/mcp/src/tools/run-wiki-health.ts, apps/mcp/src/tools/validate-structure.ts |
Direct registry, health and structure-tool reads; correction rechecked exact-name registration/dispatch and curator grants; EPI-RTE-health-maintenance | Registry enumeration is not implementation inspection of every tool |
| Server legacy health | apps/server/src/routes/lint.ts, packages/core/src/compile/l2.ts, packages/core/src/compile/l2_prompts.ts, packages/core/src/tools/executor.ts, packages/core/src/graph/crosslinker.ts, schema/lint.md |
Direct health/L2/crosslink reads and selected executor methods; EPI-RTE-health-maintenance | Layout/store compatibility and complete behavior of every executor method unobserved |
| Topic synthesis and contradiction tool | apps/server/src/lib/synthesis.ts, apps/server/src/routes/synthesize.ts, apps/mcp/src/lib/synthesis-runner.ts, apps/mcp/src/tools/find-contradictions.ts, packages/core/src/synthesis/prompts.ts, packages/core/src/synthesis/validate.ts |
Direct reads; EPI-RTE-topic-synthesis | Semantic checks weaker than sentence-support promise; other MCP synthesis callers not individually traced |
| Synthesis retention/recovery | apps/server/src/lib/synthesis-cache.ts, apps/server/src/lib/synthesis-worker.ts |
Direct reads; EPI-RTE-synthesis-cache | Mark-stale producers not exhaustively traced; no universal freshness guarantee |
| Contradiction probe and consumer | packages/core/src/compile/contradiction-probe.ts, packages/core/src/analysis/cache.ts, packages/core/src/analysis/insights.ts, packages/core/src/analysis/suggestions.ts, apps/server/src/lib/analysis-scheduler.ts, apps/server/src/routes/analysis.ts |
Direct reads; EPI-RTE-contradiction-probe, EPI-RTE-probe-consumption | Cue-limited selection and clipped legacy note bodies; no measured accuracy or complete cache-invalidation audit |
| Plugin commands, agents and session hook | apps/plugin/hooks/hooks.json, apps/plugin/agents/builder.md, apps/plugin/agents/curator.md, apps/plugin/hooks/session-start |
Direct hook registration and agent-text reads; session-start body via supplied RT-BAP-session-context; RT-RTE-plugin-build | External host obedience and actual context isolation unobserved; curator grant names do not match registered health-tool names, so curator-to-health reachability is unestablished |
| Other material operations | apps/server/src/lib/capture-worker.ts, apps/server/src/lib/classify-worker.ts, packages/core/src/brief/build.ts, packages/core/src/srs/extract.ts, packages/core/src/compile/l1.ts, apps/server/src/routes/answer-file-back.ts |
Unassessed here except limited CLI/L1 opening inspection; no inherited exhaustive finding | Prevent complete enumeration of acquisition, evaluation, acceptance, file-back and policy-adaptation routes |
| Other exposed paths and evaluators | apps/mcp/src/tools/ingest-execute.ts, apps/mcp/src/prompts/index.ts, apps/mcp/src/resources/index.ts, apps/server/src/routes/tree/crud.ts, apps/server/src/routes/schema.ts, docs/testing-walkthrough.md, docs/manual-smoke-checklist.md |
Enumerated or supplied as remaining scope; not directly assessed here. Mobile/browser capture, other plugin agents, tests and CI also unassessed | Prevent system-complete negatives, uniform approval or source-warrant assertions, and evaluation-performance conclusions |
Requested answer filing (apps/server/src/routes/answer-file-back.ts, packages/core/src/file-back/build-plan.ts), editable schema instructions (apps/server/src/routes/schema.ts) and retained classification guidance (apps/server/src/lib/classify-worker.ts, packages/core/src/classify/samples.ts, packages/core/src/classify/classify-note.ts, packages/core/src/classify/prompt.ts) remain outside this member's declared route inventory. No complete filing/admission, instruction-edit, working-context, retained-authority or policy-adaptation comparison is claimed.
Missing user corpora prevent identifying actual propositions and their original warrant. Missing execution traces prevent identifying which implemented routes produced or checked any real retained page. Missing controlled comparisons prevent attributing improvement, compounding knowledge or model accuracy. Provider weights and host internals are excluded external responsibilities, not evidence of their absence. Supplied runtime findings remain valid scoped accounts; the health pipeline below adds a consequential route omitted there, rather than superseding the ops-lint finding.
Epistemic-object inventory
| Object ID | Candidate truth-apt content or none | Claimed role | Evidence source ID and local anchor | Gap/limit |
|---|---|---|---|---|
| EPI-OBJ-source-text | External/user assertions; actual propositions not determinable without corpus | Inputs | see record; SRC-1 apps/server/src/ops/gather.ts |
Source identity labels are not source authentication |
| EPI-OBJ-wiki-pages | Summaries, decisions, learnings, research claims and answers | Maintained knowledge | see record; SRC-1 apps/server/src/ops/recipes/build.ts |
A truth label or write does not prove acceptance |
| RT-OBJ-actions | None in command envelope; Markdown is a separately interpreted payload | Execute proposed changes | see record; SRC-1 apps/server/src/ops/types.ts |
Schema admits command shape, not claim truth |
| EPI-OBJ-synthesis-prose | Topic summary, threads, headings, contradiction excerpts and gap suggestions | Synthesis and diagnosis | see record; SRC-1 packages/core/src/synthesis/validate.ts |
Entailment and excerpt occurrence unverified |
| EPI-OBJ-citation-fields | Symbolic pointers to possible support, not the support relation itself | Lineage/evidence hints | see record; SRC-1 packages/core/src/synthesis/validate.ts |
Valid line coordinates need not support adjacent prose |
| EPI-OBJ-probe-reason | Model's stated reason that two pages collide or agree | Factual collision diagnosis | see record; SRC-1 packages/core/src/compile/contradiction-probe.ts |
A verdict can instead encode missing page or parse/provider error |
| EPI-OBJ-probe-verdict | Enum encoding a page-pair relation; error fallback is not a substantive judgment | Skip/review selector | see record; SRC-1 packages/core/src/analysis/cache.ts |
ListConfirmed selects by enum, not reason quality |
| EPI-OBJ-lint-prose | Claimed contradiction, stale claim, structural issue or gap | Review artifact prose | see record; SRC-1 apps/server/src/ops/runner.ts |
Diagnosis not established by occurrence |
| EPI-OBJ-lint-controls | None beyond encoded kinds and occurrence results | Finding admission/display controls | see record; SRC-1 apps/server/src/ops/runner.ts |
Boolean verified concerns quote occurrence only |
| EPI-OBJ-compile-plan | Proposed natural-language edits inside symbolic tool calls | CLI proposal and execution input | see record; SRC-1 apps/cli/src/commands/ingest.ts |
Approval governs calls, not proposition truth; core internals only partially inspected |
Authority-route ledger
This ledger splits content production, checks, disposition and retention even where one canonical route implements several functions. Architectural status here concerns inspected capacity, not observed operation. Other members own activation predicates, return/read-back details and authority paths where a cell says see. No row asserts observed acceptance or successful downstream use.
| Route ID | Route function | Architectural status | Object/candidate ID | Content/update relation | Transition or check target | Evaluator/condition and domain | Activation and timing | Possible or observed result | Implemented force | Epistemic authority and scope | Operational authority: behavior permitted, blocked, or changed | Behavioral-authority path: consumer, channel, force, horizon | Evidence source ID and local anchor | Claim IDs or none | Mismatch marker or none | Gap/limit |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| RT-RTE-contribute-plan, RT-RTE-research-page | content transformation | implemented | EPI-OBJ-source-text | truth-apt transformation: acquisition/import | Caller contribution or optional web text enters model-visible evidence | Caller/import and optional fetch; no source-authentication check established | see routes | Captured source or fetched/snippet text | Supplies candidate evidence | Source warrant unknown; labels retained but truth/authenticity not established | Can condition proposal generation | see routes | SRC-1 apps/server/src/ops/runner.ts; see routes |
none | Acquisition is not new knowledge production | Source/capture extraction branches not exhaustively assessed |
| RT-RTE-contribute-plan | content transformation | implemented | EPI-OBJ-source-text, EPI-OBJ-wiki-pages | truth-apt transformation: indeterminate | Source to candidate takeaways/Markdown | Model; source excerpts and project guidance | see route | Candidate plan | see route | Candidate synthesis only; preservation versus derivation versus addition unresolved | Propose actions | see route | SRC-1 apps/server/src/ops/recipes/contribute.ts; see route |
RT-CLM-approved-changes | none | No generated instance to classify |
| RT-RTE-contribute-plan | disposition/acceptance | implemented | RT-OBJ-actions | no content change | Proposed wiki actions | Schema, slug guards and caller indexes; UI offers human veto | see route | Selected or abandoned plan | Enforcing filtering | Operational admission, not a recorded evidence-consuming truth decision | Selected actions can write | see route | SRC-1 apps/server/src/ops/runner.ts; see route |
RT-CLM-approved-changes | Approval scope limited | Human rationale/criterion unobserved |
| RT-RTE-build-context, RT-RTE-research-page | content transformation | implemented | EPI-OBJ-wiki-pages | truth-apt transformation: indeterminate | Existing context and selected sources to Markdown | Model instructed to preserve truth/support; no independent semantic verdict | see routes | Rewritten context or research page | Candidate production | Acquired warrant unknown; semantic preservation not demonstrated | Generate executor payloads | see routes | SRC-1 apps/server/src/ops/recipes/build.ts, apps/server/src/ops/recipes/research.ts |
EPI-CLM-knowledge-compounds | Truth not checked | Could reshape, derive or conjecture; actual outputs required |
| RT-RTE-build-context, RT-RTE-research-page, RT-RTE-plugin-build | retention | implemented | EPI-OBJ-wiki-pages | no content change | Generated content to persisted files | Software shape/path/line constraints; hosted synthesis external | see routes | File writes or partial failures | Enforcing I/O constraints | Retention is not acceptance or post-acceptance integration | Future builds/questions/sessions can consume | see routes and RT-BAP-session-context | SRC-1 apps/server/src/ops/executors.ts; see routes |
RT-CLM-approved-changes | Direct-write alternatives | MCP writer implemented; hosted build sequence only afforded |
| RT-RTE-ask-answer | operational admission/selection/consumption | implemented | EPI-OBJ-wiki-pages | no content change | Retained content to answer model | Ranked selection and model file requests | see route | Delivered source blocks and answer | Advisory content | Retrieval licenses availability, not factual endorsement | Model can answer and mark new knowledge for auto-save | see route | SRC-1 packages/core/src/qa/query.ts; see route |
EPI-CLM-knowledge-compounds | none | Citation instructions are not sentence checks |
| RT-RTE-ask-answer | content transformation | implemented | EPI-OBJ-wiki-pages | truth-apt transformation: indeterminate | Retrieved sources and question to answer | Model under citation and analysis guidance | see route | Answer, optional new-knowledge marker | Candidate generation | No checked entailment or novelty decision | Supplies user response and potential auto-save input | see route | SRC-1 schema/query.md; see route |
EPI-CLM-knowledge-compounds | Marker does not prove novelty | No actual answer/source pair supplied |
| RT-RTE-ask-answer | retention | implemented | EPI-OBJ-wiki-pages | no content change | Answer marker to stored note | autoSave configuration and regex, not evidence comparator | see route | Saved answer or error | Permissive marker then write | No novel-claim acceptance established | Later retrieval can amplify unvalidated answer | see route | SRC-1 apps/server/src/routes/ask.ts; see route |
RT-CLM-approved-changes | New-knowledge label not warrant | No observed saved instance |
| EPI-RTE-topic-synthesis | content transformation | implemented | EPI-OBJ-synthesis-prose | truth-apt transformation: indeterminate | Retrieved notes to synthesis | Model receives numbered source lines | see record | Structured candidate prose | Candidate generation | Requested source-bounded synthesis, not proven reshaping or entailment | Supplies validator input | see record | SRC-1 apps/server/src/lib/synthesis.ts |
EPI-CLM-sentence-pruning | none | No output instance or semantic check |
| EPI-RTE-topic-synthesis | check/evidence production | implemented | EPI-OBJ-citation-fields | no content change | Citation slug and line range; optional inline marker syntax | Deterministic coordinates and regex; not entailment domain | see record | Valid/invalid coordinates and pruned content | Enforcing limited filter | Validity of pointers only | Feeds retained/displayed result | see record | SRC-1 packages/core/src/synthesis/validate.ts |
EPI-CLM-sentence-pruning | Conditional pruning | Concrete counterexample retained below |
| EPI-RTE-topic-synthesis | disposition/acceptance | implemented | EPI-OBJ-synthesis-prose | no content change | Thread admission and contradiction/gap filtering | Code requires nonempty pruned content and at least one valid citation; other fields have weaker gates | see record | Kept/dropped thread; summary survives separately | Enforcing output filtering | Not evidence-consuming acceptance of the prose's truth | Admitted fields returned for caching/UI/tool consumers | see record | SRC-1 packages/core/src/synthesis/validate.ts |
EPI-CLM-sentence-pruning | Unsupported prose can survive | No accepted ampliative claim established |
| EPI-RTE-synthesis-cache | retention | implemented | EPI-OBJ-synthesis-prose, EPI-OBJ-citation-fields | no content change | Result to topic cache | Code after generation; no human per-result veto | see record | JSON persists | Enforcing write | Cached candidate, not accepted knowledge | Later endpoint/tool can reuse | see record | SRC-1 apps/server/src/lib/synthesis-cache.ts |
none | none | Server and MCP cache implementations not presumed identical |
| EPI-RTE-synthesis-cache | lineage/freshness/recovery | implemented | EPI-OBJ-citation-fields | no content change | Source hashes, reverse index and stale set | Code regeneration; cache read itself does not check hashes | see record | Regenerate or clear failed stale job | Scheduling and reuse | Freshness metadata, not truth validation | Cached result may be served pending refresh | see record | SRC-1 apps/server/src/lib/synthesis-worker.ts |
none | Refresh not endorsement | Stale producers not fully audited |
| EPI-RTE-evidence-quotes | check/evidence production | implemented | EPI-OBJ-lint-findings | no content change | Claimed quote occurrence in files | Normalized substring check | see record | Per-item verified booleans | Produces gate inputs | Occurrence only; no logical collision license | Makes findings eligible for retention | see record | SRC-1 apps/server/src/ops/runner.ts |
EPI-CLM-wiki-audit | Count is not semantic proof | Duplicate evidence not made independent |
| EPI-RTE-evidence-quotes | disposition/acceptance | implemented | EPI-OBJ-lint-findings | no content change | Contradiction/stale finding retention | Count at least two/one verified items respectively | see record | Kept or dropped finding | Enforcing diagnosis filter | Accepts occurrence threshold for review, not truth of conflict | Parent stores eligible findings; human may dismiss | see record and RT-RTE-lint-findings | SRC-1 apps/server/src/ops/runner.ts |
EPI-CLM-wiki-audit | Exactness qualified | No checked distinct-page requirement |
| EPI-RTE-contradiction-probe | check/evidence production | implemented | EPI-OBJ-probe-reason, EPI-OBJ-probe-verdict | truth-apt transformation: indeterminate | Specific factual collision between two page excerpts | Model judge with defined three-way rubric | see record | contradicts/compatible/unrelated, including error fallback | Diagnostic output | Model opinion within excerpt domain; not independent ground truth | Supplies cached verdict | see record | SRC-1 packages/core/src/compile/contradiction-probe.ts |
EPI-CLM-wiki-audit | Errors collapse to unrelated | No expected-answer oracle or measured calibration |
| EPI-RTE-contradiction-probe | retention | implemented | EPI-OBJ-probe-verdict, EPI-OBJ-probe-reason | no content change | Verdict to SQL cache | Any returned enum, including fallback | see record | Stored result suppresses matching future judge call | Enforcing cache skip | Caching grants no added warrant | Matching pair/model/prompt reused | see record | SRC-1 packages/core/src/analysis/cache.ts |
none | No body hash in lookup | Other invalidation paths not exhaustively assessed |
| EPI-RTE-probe-consumption | operational admission/selection/consumption | implemented | EPI-OBJ-probe-verdict | no content change | Cached enum to high-severity review suggestion | SQL verdict filter and fixed suggestion rule | see record | Contradiction flagged for user review | Ranking/advisory, not automatic factual resolution | UI category is stronger wording than model-only warrant | Prioritizes review suggestions, no compelled correction | see record | SRC-1 packages/core/src/analysis/insights.ts |
EPI-CLM-wiki-audit | Confirmed is a cache label | Can include other model/prompt rows; no current-key filter in listConfirmed |
| EPI-RTE-health-maintenance | content transformation | implemented | EPI-OBJ-wiki-pages | truth-apt transformation: indeterminate | Health overview to model-proposed text repairs | L2 model sees summaries/index/structural issues, not every full page | see record | Rewrite, append, summary or other supported action | Direct executor dispatch | Candidate repair, no demonstrated semantic improvement | Changes files subject to handler checks | see record | SRC-1 packages/core/src/compile/l2.ts |
EPI-CLM-knowledge-compounds | Health API writes; curator mapping unresolved | Proposed content may replace rather than preserve meaning |
| EPI-RTE-health-maintenance | operational admission/selection/consumption | implemented | EPI-OBJ-wiki-pages | no content change | Parsed L2 actions to handlers | Code dispatch; human_touched veto for inspected rewrite/update handlers | see record | Writes, handler rejection, or return-only flags/merge | Enforcing code checks, no semantic approval | Neither flag success nor queued label establishes resolved knowledge | Later consumers see successful writes, not a validated repair certificate | see record | SRC-1 packages/core/src/tools/executor.ts |
RT-CLM-approved-changes | Registered API writes; curator grant differs | No pipeline transaction/rollback established |
| EPI-RTE-health-maintenance | content transformation | implemented | EPI-OBJ-wiki-pages | truth-apt transformation: non-ampliative reshaping | Exact-title mention to wikilink | Fixed title match and score threshold | see record | Existing words linked | Enforcing auto-mode edit | Pointer insertion only; identity of referent remains heuristic | Alters future navigable graph | see record | SRC-1 packages/core/src/graph/crosslinker.ts |
none | Extracted does not mean semantically verified | Does not warrant title disambiguation |
| EPI-RTE-cli-admission | disposition/acceptance | implemented | EPI-OBJ-compile-plan | no content change | CLI compile plan to execution | Human all-or-nothing prompt or --yes bypass; distinct from ops envelopes | see record | Aborted or all actions forwarded | Enforcing caller checkpoint | Approval is permission, not evidence of truth | Calls compileL1Execute | see record | SRC-1 apps/cli/src/commands/ingest.ts |
RT-CLM-approved-changes | --yes alternative | Core planning/execution loop not fully inspected |
No post-acceptance lifecycle-integration route is established in these traces: operational writes, links and retrieval occur, but an evidence-consuming acceptance decision for a produced claim was not found in these inspected pipelines. This is a route-bounded finding, not a system-complete negative. No formal derivation route from warranted premises is established here. Failure to establish entailment does not classify all synthesis as ampliative conjecture.
System-claim versus route comparison
| Claim ID | Claimed operation or warrant | Claim source ID/anchor and evidence layer | Doctrine/design support | Implemented route IDs | Observed-run support | Causal support and design limits | Supported conclusion | Mismatch/unknown |
|---|---|---|---|---|---|---|---|---|
| RT-CLM-approved-changes | see record | SRC-1 README.md; doctrine/design |
see record | RT-RTE-contribute-plan, RT-RTE-build-context, RT-RTE-research-page, RT-RTE-ask-answer, EPI-RTE-health-maintenance, EPI-RTE-cli-admission | None supplied | No intervention/comparison | Selected UI path affords human selection; several alternate write paths do not require per-content approval | Universal wording unsupported; approval still would not establish warrant |
| EPI-CLM-wiki-audit | see record | SRC-1 README.md; doctrine/design |
Recipes and curator request diagnosis | RT-RTE-lint-findings, EPI-RTE-evidence-quotes, EPI-RTE-contradiction-probe, EPI-RTE-probe-consumption | None supplied | Neither excerpt checks nor returned categories establish diagnostic accuracy | Implemented bounded auditing with quote-occurrence gate and separate model-judge review path | Whole-wiki/exact-conflict guarantee exceeds caps, normalization and count-only gate |
| EPI-CLM-sentence-pruning | see record | SRC-1 packages/core/src/synthesis/prompts.ts; doctrine/design |
Explicit every-sentence support requirement | EPI-RTE-topic-synthesis | None supplied | Deterministic input trace disproves universal pruning; not a model performance test | Valid reference coordinates can accompany unsupported prose | Citation-free content is preserved if its thread has valid citation metadata |
| EPI-CLM-knowledge-compounds | see record | SRC-1 README.md; doctrine/design |
Build requests preservation and contradiction flags; query asks for source-supported analysis | RT-RTE-build-context, RT-RTE-ask-answer, RT-BAP-session-context, EPI-RTE-synthesis-cache | None supplied | No quality baseline, longitudinal corpus or comparison | Persistent material has routes to later models; accumulation and reuse are implemented capacities | Progressively sharper/compounding knowledge remains unestablished, not refuted by mere absence of runs |
Bounded conclusion
MindBase has multiple routes from user/source text to retained, behaviorally consequential prose. The inspected system imports sources, selects excerpts, requests synthesis and answers, writes context/research pages and can reload them in builds, questions and sessions. Source warrant is unknown: paths and citations preserve some lineage pointers but do not authenticate content or establish that transformations preserve meaning. See RT-RTE-contribute-plan, RT-RTE-build-context, RT-RTE-research-page, RT-RTE-ask-answer and RT-BAP-session-context.
The implemented checks have different licenses. JSON schemas license command execution; citation coordinates license valid pointers; normalized quote matches license occurrence claims; a model judge supplies a bounded opinion about a pair of excerpts. None establishes a source-backed accepted ampliative proposition merely by retaining or displaying its result. The quote gate can reject fabricated quotations and the synthesis validator can reject invalid line coordinates: these are real checks, not grounds for treating every retained statement as unverified in every respect. Their missing semantic entailment checks remain consequential. See EPI-RTE-topic-synthesis and EPI-RTE-evidence-quotes.
Operational authority is stronger than epistemic warrant in several places. Build/research and marker-triggered answer saving can persist candidates without a content-specific human decision. The registered L2 health API can directly rewrite knowledge; handler checks can veto some edits, while flag/merge success can be return-only. The curator grants and requests mindbase_run_wiki_health, whereas the MCP server registers run_wiki_health and dispatches by exact name. No inspected mapping connects those names, so the curator-to-writer path is unestablished; this mismatch is not a host-safety guarantee. Cached model verdicts influence which issues rank as high-priority review, without forcing a correction or proving a collision. These distinctions follow EPI-RTE-health-maintenance, EPI-RTE-probe-consumption and the supplied runtime routes, not an inference from the word knowledge.
No produced accepted ampliative claim, warranted formal derivation or post-acceptance integration instance is established within these inspected routes. Without actual source/output pairs, model semantic updates remain indeterminate between reshaping, entailed derivation and conjecture. The deterministic crosslink example is bounded non-ampliative reshaping, not new factual knowledge. Other included but unassessed mechanisms prevent a complete system negative.
Persistent updates and advisory delivery afford later behavior changes, not demonstrated learning. No improvement comparison establishes improved future capacity. The code does not update provider parameters through these inference routes; endpoint/version uncertainty remains as stated in RT-CMP-model. Auditing a wiki is not by itself reflection about the system's operating method. Model-owned proposals and software progression establish computational roles independently of correctness; human veto exists in some routes, not all. No exercised self-improvement attribution or autonomous theory-builder verdict follows from these findings. Source-native project rules guide future proposals through RT-BAP-project-rules, but content-directed criticism and iterative revision of those method rules were not established by this bounded trace.
Shared records
Operative objects
EPI-OBJ-source-text
Label: Contributor and retrieved source text
SRC-1, apps/server/src/ops/gather.ts, apps/server/src/ops/recipes/research.ts. Natural-language text on project files or supplied search results, temporarily selected into model inputs. Distinct from RT-OBJ-actions: it is input evidence, not a command envelope. Source propositions and warrant are corpus-dependent and not determinable here. Supplied RT-RTE-research-page covers acquisition of optional web results; this is not a new acquisition route declaration.
const MAX_SOURCE_FILES = 30; const MAX_SOURCE_CHARS = 4_000; ---
apps/server/src/ops/gather.tsconst fresh = withM.filter((f) => f.mtime > contextMtime).sort((a, b) => b.mtime - a.mtime).slice(0, MAX_SOURCE_FILES); ---
apps/server/src/ops/gather.ts
EPI-OBJ-wiki-pages
Label: Context and wiki page prose
SRC-1, apps/server/src/ops/recipes/build.ts, packages/core/src/tools/executor.ts. Natural-language context/research/legacy page bodies on project storage, interpreted by later models or humans. Distinct from RT-OBJ-actions, which identifies transient command envelopes, not the retained corpus; not a part of that envelope. Existing routes cover writes/read-back rather than declaring this corpus object. Actual claim truth is unobserved.
preserve still-true content; flag contradictions between sources explicitly with ⚠️. ---
apps/server/src/ops/recipes/build.tsawait this.store.writeText(mdPath,
# ${meta.title}\n\n${newContent}\n); ---packages/core/src/tools/executor.ts
EPI-OBJ-synthesis-prose
Label: Synthesis prose fields
SRC-1, packages/core/src/synthesis/validate.ts. Natural-language summary, thread headings/content, contradiction excerpts/explanations and gap suggestions inside transient structured results and cached JSON. Symbolic references have separate identity in EPI-OBJ-citation-fields. No counterpart among supplied runtime objects: these are topic-synthesis outputs, not ops action envelopes. Their validation criteria differ by field; summary is passed through, contradiction excerpt occurrence is not checked.
return { summary: raw.summary ?? '', threads, contradictions, gaps }; ---
packages/core/src/synthesis/validate.ts
EPI-OBJ-citation-fields
Label: Synthesis citation coordinates
SRC-1, packages/core/src/synthesis/validate.ts, apps/server/src/lib/synthesis.ts. Symbolic slug/line_range fields, inline marker strings and source_hashes in parsed/cached JSON. Fixed code uses coordinates to filter and hashes as lineage metadata. Distinct from supplied RT-OBJ-actions: citation metadata rather than execution commands. These are not a warrant-bearing interpretation of source text.
const [start, end] = c.line_range; if (!Number.isInteger(start) || !Number.isInteger(end)) return false; if (start < 1 || end > lines.length || start > end) return false; return true;
---
packages/core/src/synthesis/validate.ts
EPI-OBJ-probe-reason
Label: Contradiction probe reason
SRC-1, packages/core/src/compile/contradiction-probe.ts, packages/core/src/analysis/cache.ts. Natural-language model explanation or program-created failure reason, transient then SQL text. Distinct from RT-RTE-lint-findings: a separate legacy-page judge pipeline. The sibling enum has a distinct fixed consumer in EPI-OBJ-probe-verdict.
catch { return { verdict: 'unrelated', reason: 'page A not found' }; } ---
packages/core/src/compile/contradiction-probe.ts
EPI-OBJ-probe-verdict
Label: Contradiction probe verdict
SRC-1, packages/core/src/compile/contradiction-probe.ts, packages/core/src/analysis/cache.ts. Symbolic three-way enum in memory and SQLite contradiction_cache; fixed code selects contradicts for review and skips cached pairs. Distinct from ops lint findings and ops command envelopes. Its apparent factual meaning can instead arise from an error fallback.
export type Verdict = 'contradicts' | 'compatible' | 'unrelated'; ---
packages/core/src/compile/contradiction-probe.ts
EPI-OBJ-lint-findings
Label: Stored ops lint findings
Part of: RT-RTE-lint-findings
The parent is a route; this object is its retained diagnostic artifact, not a competing route identity. SRC-1, apps/server/src/ops/runner.ts. Natural-language diagnoses and quote text have human/model interpretation; symbolic kinds, evidence verified flags and dismissed state drive filtering/display. Stored as dated JSON. These parts are distinguished by their consumers in EPI-RTE-evidence-quotes and the parent route: verified counts govern retention, dismissal governs later presentation, and prose communicates the proposed issue. No truth decision is encoded merely by verified=true.
const artifact: LintArtifact = { date, findings, dropped }; ---
apps/server/src/ops/runner.ts
EPI-OBJ-lint-prose
Label: Ops lint diagnosis and quote prose
Part of: EPI-OBJ-lint-findings
SRC-1, apps/server/src/ops/runner.ts. Natural-language diagnosis text and evidence quotations within the parent's dated JSON artifact. Human/model interpretation supplies their meaning. Distinct part from fixed-rule controls: evidence quote strings are normalized and matched by code, but that match assesses occurrence, not the diagnosis. Supporting passage is the verifyEvidence quotation in EPI-RTE-evidence-quotes, which preserves page/quote fields alongside the computed flag.
EPI-OBJ-lint-controls
Label: Ops lint kinds and verification flags
Part of: EPI-OBJ-lint-findings
SRC-1, apps/server/src/ops/runner.ts. Symbolic kind, per-evidence verified flag, ID and dismissed state in the same dated JSON. Fixed code uses verified-item counts for admission and dismissal for later presentation, unlike the diagnosis prose's interpreted meaning. The parent RT-RTE-lint-findings supplies dismissal/read-back evidence; EPI-RTE-evidence-quotes supplies the exact flag/count passages. This is a part declaration, not a competing finding-retention route.
EPI-OBJ-compile-plan
Label: CLI compile proposal tool calls
SRC-1, apps/cli/src/commands/ingest.ts. Transient plan.proposed entries carry symbolic tool-call names and argument keys plus natural-language names/Markdown edit payloads. Fixed CLI code displays call names and titles and forwards the plan to execution after batch approval. The quoted caller establishes this mixed command object; it does not establish semantic checks on text arguments. Distinct from RT-OBJ-actions: separate core compiler plan used by CLI, not ops' Zod action union or pending-plan map. No persistence of the pending CLI plan is established.
for (const a of plan.proposed) { const args = a.call.arguments as Record
; const title = (args['name'] ?? args['concept_name'] ?? args['from'] ?? '?') as string; out.info( ${a.call.name} ${title}); }---
apps/cli/src/commands/ingest.ts
Routes
EPI-RTE-topic-synthesis
Label: Topic synthesis and field admission
SRC-1, apps/server/src/lib/synthesis.ts, apps/mcp/src/lib/synthesis-runner.ts, packages/core/src/synthesis/prompts.ts, packages/core/src/synthesis/validate.ts. Server runSynthesis or MCP runSynthesisMCP selects up to twenty notes, builds a numbered-source prompt, collects model JSON and calls validateSynthesis. Server uses hybrid retrieval; MCP uses keyword retrieval. Both reconstruct legacy wiki/notes paths from hits, skipping unreadable notes; do not infer equivalent v2 coverage. Distinct from RT-RTE-research-page: structured topic-result pipeline, not ops research actions.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: Structured summary, threads, contradictions, gaps, model identity and source hashes; empty output when no notes or unparseable response.
- Later read-back: Caller cache writes allow later topic/tool invocations to reuse the result; see the distinct cache route.
- Delegated visibility: inapplicable — completion calls, not worker-agent delegation.
- Selection predicate: Up to twenty search hits; only successfully loaded legacy note bodies enter the source map. A thread requires at least one valid citation and nonempty content after optional pruning.
- Invalidation or expiry: inapplicable — generation/validation itself has no retained state; caller owns cache lifecycle.
- Activation or effect: Model proposes prose; fixed code drops invalid coordinates and some threads/sentences; admitted result can be displayed or cached. Behavioral dependence is not observed.
- Evidence limits: No executed synthesis or semantic support comparator; malformed shapes beyond the expected interfaces can throw. Source hashes identify bodies, not truth.
Admission mode is an open topic request or scheduled refresh. The model proposes; software vetoes structurally inadequate thread references, unknown contradiction slugs/confidence values and gap references. There is no per-thread human approval or expected-answer oracle. guidance requests source-bounded synthesis; no persisted criticism-to-theory loop is established. Parse failure returns empty fields; code does not independently decide whether a surviving claim follows from sources.
const validCitations = (t.citations ?? []).filter((c) => citationValid(c, sources)); if (validCitations.length === 0) continue; const prunedContent = pruneUncitedSentences(t.content ?? ''); if (!prunedContent) continue;
---
packages/core/src/synthesis/validate.tsif (!INLINE_CITE_RE.test(content)) return content.trim(); ---
packages/core/src/synthesis/validate.tsif (!c.with_slug || !sources.has(c.with_slug)) continue; if (c.confidence !== 'low' && c.confidence !== 'medium' && c.confidence !== 'high') continue; ---
packages/core/src/synthesis/validate.ts
Concrete implementation deduction, without execution: take source map a → ["The sensor is blue."] and a thread with heading Claim, content The moon is cheese., citations [{slug:"a",line_range:[1,1]}]. citationValid finds source a and integer range 1..1 within its one line. There is no inline marker, so pruneUncitedSentences returns the entire trimmed content. Both thread-admission tests pass and the unrelated sentence survives. The same path also preserves a genuinely supported citation-free sentence; lack of inline markers cannot alone determine falsity. This falsifies universal sentence pruning, not model reliability measured on a corpus. When markers do occur, regex presence rather than semantic support decides which sentence fragments survive.
EPI-RTE-synthesis-cache
Label: Server synthesis cache and refresh
SRC-1, apps/server/src/routes/synthesize.ts, apps/server/src/lib/synthesis-cache.ts, apps/server/src/lib/synthesis-worker.ts. Server owns JSON persistence, reverse source index, stale set, cached SSE replay and serial regeneration. No counterpart in supplied runtime routes: this is not ops research persistence or answer auto-save. MCP find_contradictions similarly calls its cache before generation, but the detailed server cache semantics here are not silently attributed to the separate MCP cache implementation.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: SSE meta, thread, gap and contradiction events, then done, or error. The MCP contradiction tool returns contradiction fields from cached/generated structured synthesis.
- Later read-back: Non-forced server topic request directly replays cached fields; MCP find_contradictions returns cached contradictions when present.
- Delegated visibility: inapplicable — server worker invokes runSynthesis serially, not an agent.
- Selection predicate: Normalized topic key; reverse index maps source slugs to cached topics. Server cache hit unless force; worker selects first stale key.
- Invalidation or expiry: markStaleFor adds reverse-index topics to a set; worker polls every five seconds. Cache read does not itself compare source hashes or exclude stale keys. Worker clears stale entry after success and after caught failure.
- Activation or effect: Reuses or replaces stored candidate results and influences what a later requester sees; no observed accuracy improvement.
- Evidence limits: Mutation callers of markStaleFor not exhaustively traced; no assertion that every source edit marks every affected topic. A cache hit is not a fresh evaluation.
Owner is software; model proposes replacement content during refresh. Rejection uses the generator's parsing/filtering behavior, not a human decision. Failed refresh clears its stale queue entry to avoid retries; no automatic semantic rollback or acceptance gate was found in these files.
const cached = await ctx.synthesisCache.readSynthesis(key); if (cached) { ---
apps/server/src/routes/synthesize.tsconst result = await runSynthesis(this.ctx, key); await this.ctx.synthesisCache.writeSynthesis(key, result); await this.ctx.synthesisCache.clearStale(key); ---
apps/server/src/lib/synthesis-worker.tsconsole.warn(
[synthesis-worker] regen failed for ${key}:, (e as Error).message); await this.ctx.synthesisCache.clearStale(key);---
apps/server/src/lib/synthesis-worker.ts
EPI-RTE-evidence-quotes
Label: Lint evidence quote verification
Part of: RT-RTE-lint-findings
SRC-1, apps/server/src/ops/runner.ts, apps/server/src/ops/gather.ts. This is the parent's specific check-and-filter subroute, not a duplicate declaration of its full diagnosis/retention loop. Code resolves model page labels to files, normalizes bodies and quotes, counts matching evidence items and drops insufficient contradiction/stale findings. The check target is quotation occurrence, not factual inconsistency. In particular two items need not refer to different pages or independent passages.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: Kept findings with per-item verified flags and a dropped count.
- Later read-back: Parent stores those findings in dated artifacts; later fetch/dismiss is as in the parent route, not a new knowledge-revision consumer.
- Delegated visibility: inapplicable — local code after a completion, not agent delegation.
- Selection predicate: All proposed evidence entries; contradiction needs at least two verified entries, stale at least one; other model kinds do not have this count gate.
- Invalidation or expiry: Parent overwrites same-day artifact; this gate reads current files with a per-call body cache, not a historical source snapshot.
- Activation or effect: Can reject findings from retention; it does not change the underlying page, decide which claim is true or require two distinct pages.
- Evidence limits: Normalization changes exactness; substring occurrence does not prove that the quote supports the diagnosis or that the model saw all relevant content.
The model proposes semantic findings; software can veto evidence-insufficient items; human dismissal is later and not required for admission. The reference is current page text, not an expected answer to the semantic question. No answer oracle or closed automatic correction follows from this gate.
const normalizeQuote = (s: string): string => s.toLowerCase().replace(/[*_`]/g, '').replace(/\s+/g, ' ').trim();
---
apps/server/src/ops/runner.tsreturn { page: e.page, quote: e.quote, verified: haystack !== null && haystack.includes(normalizeQuote(e.quote)) }; ---
apps/server/src/ops/runner.tsconst verifiedCount = evidence?.filter((e) => e.verified).length ?? 0; if (need !== undefined && verifiedCount < need) { dropped += 1; continue; } ---
apps/server/src/ops/runner.ts
Concrete implementation deduction: for an existing page containing Water is wet., two evidence entries with that same page and quote each receive verified=true. A contradiction finding carrying both reaches count two and is kept. This shows lack of an independent-page or semantic-conflict test; it does not claim any deployed model produced that input.
EPI-RTE-contradiction-probe
Label: Cue-selected contradiction judgment and cache
SRC-1, packages/core/src/compile/contradiction-probe.ts, packages/core/src/analysis/cache.ts, apps/server/src/lib/analysis-scheduler.ts, apps/server/src/routes/analysis.ts. Distinct from RT-RTE-lint-findings and its quote subroute: a separate scheduled/manual legacy-page judge with SQL verdict storage. Scheduler starts a first delayed probe and periodic daily probes; manual recompute calls it too. Code selects unique existing-page pairs from contrast cues before wikilinks. Model judges first 4,000 characters from each hardcoded wiki/notes path against a specific factual-collision rubric.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: judged and cached counts; each judge returns verdict and reason.
- Later read-back: Matching slug pair/model/prompt cache entry suppresses later judgment; listConfirmed feeds the distinct insights consumer.
- Delegated visibility: inapplicable — local completion and cache, not sub-agent.
- Selection predicate: Contrast-cue regex, existing target in index, non-self unique pair, default maximum twenty; skip when the pair/model/prompt key already exists.
- Invalidation or expiry: Lookup has no body hash or age cutoff. Other deletion/invalidation paths are not exhaustively inspected, so no global permanence claim is made.
- Activation or effect: Produces a diagnostic verdict and persists all returned enums, including fallback unrelated results; matching cached result blocks reevaluation in this loop.
- Evidence limits: Cue selection misses other conflicts; hardcoded legacy paths can fail for indexed pages elsewhere. Verdict parsing and fallback are not external truth checks; no observed accuracy or calibration.
Diagnosis mode is scheduled bounded candidate evaluation or manual recompute. Software chooses pairs and validates enum; the model proposes/decides semantic classification without per-pair human approval. Missing pages, malformed JSON, adapter exceptions and invalid enums yield unrelated with program-generated reason. No expected-answer oracle. The intended criterion is opposing factual assertions about the same subject, for user review over excerpts; no statement that the system knows which assertion is correct is licensed.
Be strict — only return "contradicts" if there is a specific factual collision you can point at.
; ---packages/core/src/compile/contradiction-probe.ts`const A = bodyA.slice(0, 4000); const B = bodyB.slice(0, 4000); ---
packages/core/src/compile/contradiction-probe.tsif (existing) { cached++; continue; } ---
packages/core/src/compile/contradiction-probe.tsWHERE slug_a = ? AND slug_b = ? AND model_id = ? AND prompt_version = ? ---
packages/core/src/analysis/cache.ts
EPI-RTE-probe-consumption
Label: Cached contradictions to review suggestions
SRC-1, packages/core/src/analysis/insights.ts, packages/core/src/analysis/cache.ts, packages/core/src/analysis/suggestions.ts, apps/server/src/routes/analysis.ts. Owner: deterministic analysis code. Endpoints are cached verdicts → listConfirmed → AnalysisInsights/analysis cache → insights API. Distinct from all supplied runtime records and from the judge producer: it consumes rather than evaluates a pair. The consumer does not inspect model reasons to establish factual correctness and does not resolve conflicts.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: Unified insight payload, including contradiction pairs/reasons and ranked suggestions.
- Later read-back: Derived suggestions persist in analysis cache; future analysis can reread verdicts. User-visible response is an advisory review cue, not a knowledge rewrite.
- Delegated visibility: inapplicable — no model delegation in this consumer.
- Selection predicate: SQL verdict equals contradicts, without current model/prompt filter; suggestions label contradictions high severity and cap sorted output at default five.
- Invalidation or expiry: Derived insights recompute; source-verdict freshness limitations remain those of the producer/cache. No invalidation of factual claims is implemented by generating a suggestion.
- Activation or effect: Promotes selected cached results into high-severity suggestions; future human review is possible, not enforced or observed.
- Evidence limits: No downstream accepted correction or observed human action; cached confirmed wording is not a new check.
Behavioral-authority path: insights API/UI caller receives fixed-wording suggestions, ranked ahead of lower-severity issues; advisory horizon lasts through cache reuse/recomputation and human review. Software selects the enum; a human can ignore it. No answer oracle, proposal admission or automatic repair exists in this consumer.
WHERE verdict = 'contradicts' ORDER BY computed_at DESC ---
packages/core/src/analysis/cache.tsmessage:
[[${c.slugA}]] and [[${c.slugB}]] contain contradictory claims — review which is correct., actionable: { slugs: [c.slugA, c.slugB] }, severity: 'high',---
packages/core/src/analysis/suggestions.ts
EPI-RTE-health-maintenance
Label: Health pipeline crosslink and L2 writes
SRC-1, apps/mcp/src/tools/run-wiki-health.ts, apps/server/src/routes/lint.ts, packages/core/src/compile/l2.ts, packages/core/src/compile/l2_prompts.ts, packages/core/src/graph/crosslinker.ts, packages/core/src/tools/executor.ts, schema/lint.md, apps/plugin/agents/curator.md, apps/mcp/src/tools/index.ts. Distinct from RT-RTE-lint-findings, whose ops endpoint stores findings without rewriting knowledge. This health pipeline writes an insights page, performs automatic crosslinking, then sends a wiki overview to an L2 model and directly dispatches parsed actions to ToolExecutor. It adds an omitted consequential maintenance route; it does not supersede the valid narrower ops finding. The curator is instructed to be read-only and grants mcp__mb__mindbase_run_wiki_health, with process text requesting mindbase_run_wiki_health. The registered API is instead run_wiki_health, and the MCP dispatcher uses exact-name lookup. No inspected mapping establishes curator access to this writer. The API's independent write behavior remains supported; neither curator reachability nor host safety follows from the mismatched names.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: MCP health metrics, crosslink and L2 action counts; server legacy lint SSE progress/results. Individual executor outcomes can include failure even when compileL2 returns ok=true.
- Later read-back: Successful writes to wiki bodies, summaries/index and insights can enter future search, compilation or display; actual read-back activation not observed. flag_contradiction and merge handlers inspected here return flags/status without storing a resolution or merge.
- Delegated visibility: uninspected — external host controls agent execution and tool-name exposure; the curator's prefixed health grant does not match the registered API name, and no mapping was established. Independently, the registered API performs internal L2 model work and I/O.
- Selection predicate: Graph exact-title mentions outside code/frontmatter detection feed crosslinks; exact-title score starts at six and auto mode applies extracted links. L2 gets index, one-liners, metadata and structural issues; actions come from parsed JSON array, not a per-action human checklist.
- Invalidation or expiry: Reindex follows MCP health; server reindexes on lint.ok. No pipeline-wide transaction or automatic content rollback is established in inspected orchestration. rewrite/update checks can reject human_touched pages; no equivalence asserted for every handler.
- Activation or effect: Auto crosslinks write Markdown. L2 can replace/append prose and change summaries through registered handlers. No expected-answer or semantic truth gate precedes dispatch.
- Evidence limits: No successful execution, layout compatibility test or measured improvement; not every executor method inspected. Tool return counts do not establish that all actions succeeded, nor that return-only flags affected later behavior.
Admission mode is a user/host health request. Fixed code proposes exact-title links; L2 proposes repairs under schema/lint guidance. Software selects/dispatches, with argument/path/state checks in handlers; no human per-action approval in these wrappers. Human_touched metadata supplies a software veto in the inspected rewrite/update handlers, not a general human truth decision. Failed operations can leave earlier effects; no rollback implementation was inspected in this path. What persists is changed wiki content/metadata/index and insights, not an evidenced accepted theory or its criticism history.
Concrete crosslink deduction: with indexed target title Alpha, a page body Alpha is useful. and no existing edge, titlePattern matches; score begins at six, so confidence becomes extracted. In auto mode replaceFirstOutsideCode yields [[Alpha]] is useful. and the changed page is written. This changes navigation without establishing a new factual proposition. It does not establish that every occurrence of a title refers to that indexed entity.
const xlink = await crossLink(ctx.store, { mode: 'auto' }); const adapter = ctx.getAdapter(); const lint = await compileL2({ adapter, store: ctx.store, model: ctx.config.model }); ---
apps/mcp/src/tools/run-wiki-health.tsconst call = actionToToolCall(action, i); const result = await executor.execute(call); toolResults.push({ call, result }); ---
packages/core/src/compile/l2.tsif (meta.edit_state === 'human_touched') { return { ok: false, error:
concept ${slug} is human_touched, skipping rewrite}; } ---packages/core/src/tools/executor.tsresult: { slug_a: args.slug_a, slug_b: args.slug_b, flagged: true }, ---
packages/core/src/tools/executor.tsresult: { keep: args.keep, absorb: args.absorb, status: 'queued_for_review' }, ---
packages/core/src/tools/executor.tslet score = 6; // exact title match (+6 per plan, guarantees EXTRACTED) ---
packages/core/src/graph/crosslinker.tsawait store.writeText(pageNode.path, modifiedBody); ---
packages/core/src/graph/crosslinker.tsconst handler = handlers.get(req.params.name); ---
apps/mcp/src/tools/index.tsname: 'run_wiki_health', ---
apps/mcp/src/tools/run-wiki-health.ts
- Run wiki health via
mindbase_run_wiki_health({ projectId }). This calls find_orphans + find_contradictions + find_gaps + suggest_links and returns a composite report. ---apps/plugin/agents/curator.mddescription: Sub-agent dispatched by /mb:lint. Read-only — has Read + lint MCP tools but no Edit/Write/Bash. Surfaces orphans, contradictions, stale claims, gaps. Suggests fixes; doesn't apply them. ---
apps/plugin/agents/curator.md
EPI-RTE-cli-admission
Label: CLI ingest all-action approval
SRC-1, apps/cli/src/index.ts, apps/cli/src/commands/ingest.ts. Distinct from RT-RTE-contribute-plan: separate CLI caller of core compileL1Plan/Execute, not the ops pending-plan route. Local file ingestion stores raw content before planning; URL mode passes the URL string to ingestPaste rather than fetching its page in this caller. CLI uses an empty hybridSearch callback. Human sees action kinds/titles and an all-or-nothing confirmation unless --yes. The core compile implementation was not fully traced, so this record owns caller admission, not every executor guarantee.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: Proposed action list, aborted message or execution results printed to terminal.
- Later read-back: uninspected — caller forwards to compileL1Execute; full persistence/read-back semantics of this core path not traced here.
- Delegated visibility: inapplicable — no sub-agent in this caller.
- Selection predicate: User confirms entire proposal, or --yes bypasses interactive confirmation; execution receives empty approvals object documented locally as all approved.
- Invalidation or expiry: inapplicable — current invocation plan, no TTL or persistent proposal cache in this caller.
- Activation or effect: Confirmation/flag gates the call to compileL1Execute; no evidence-consuming truth criterion is enforced in the CLI caller.
- Evidence limits: No runtime or human deliberation evidence; downstream core guarantees not inferred from caller intent.
Open ingest request; model proposes via core planner, human or --yes flag authorizes the batch. Aborting vetoes execution but does not reverse prior source ingestion. No expected-answer oracle. No rollback assertion beyond this caller's inspected code.
.option('--yes', 'auto-approve all proposed actions') ---
apps/cli/src/commands/ingest.tsconst approvals = {}; // empty = all approved ---
apps/cli/src/commands/ingest.ts
Claims
EPI-CLM-wiki-audit
Label: Whole-wiki exact-conflict audit
SRC-1, README.md; doctrine/design conclusion status: claimed. Distinct from RT-CLM-approved-changes: audit coverage and quote quality rather than permission to write.
It audits its own knowledge. One command re-reads the whole wiki and reports contradictions with the exact conflicting sentences quoted. Notion and NotebookLM structurally cannot do this. ---
README.md
The competitor comparison is attributed marketing, not independently assessed evidence. The concrete MindBase audit claim is bounded by forty research excerpts of 1,200 characters in ops gather, model judgment and normalized occurrence counts; probe uses selected legacy-page pairs. The implementation supports diagnosis capacity, not exhaustive or sound contradiction detection.
const MAX_LINT_PAGES = 40; const MAX_EXCERPT_CHARS = 1_200; ---
apps/server/src/ops/gather.ts
EPI-CLM-sentence-pruning
Label: Every synthesis sentence backed and pruned
SRC-1, packages/core/src/synthesis/prompts.ts; doctrine/design conclusion status: claimed. No supplied claim counterpart: this concerns the structured topic-synthesis prompt, not ops action approval. It explicitly claims a postprocessing behavior as well as requesting citation support. The validator's no-inline-marker branch is a countercase; see EPI-RTE-topic-synthesis.
- Every sentence in "content" MUST be backed by at least one citation. Post-processing drops uncited sentences. ---
packages/core/src/synthesis/prompts.ts
EPI-CLM-knowledge-compounds
Label: Contributions sharpen retained knowledge
SRC-1, README.md; doctrine/design conclusion status: claimed. Distinct from supplied approval claim: a longitudinal quality/benefit assertion. Persistence and later consumers are implemented; improving truth/coverage or future action capacity requires evidence not supplied in this run.
Knowledge compounds. Your
context.mdgets sharper every time you contribute. ---README.md
Evidenced absences
none declared in this member
Behavioral-authority paths
none declared in this member; supplied runtime paths and new route declarations above give the assessed consumers, channels, forces and horizons without duplicating their identities.