Nuggets epistemic report
Type: agentic-system-analyses/types/agentic-system-epistemic-report.md
Source-and-claim boundary
The question is whether the shipped memory and gateway acquire, produce, check and license claims for later reliance. Scope and exclusions: see boundary; evidence identities and layers: see its Source register. All additional source inspection below is SRC-1, implementation unless labelled doctrine/design, at the same frozen commit. No execution or causal evidence was supplied or generated.
The assessment includes explicit memory operations, automatic capture, numerical reconstruction/cleanup, recall selection, withdrawal, migration, promotion, testing and gateway consumption. The absent advertised plugin, external Pi/provider internals, external Claude memory reader, live facts and execution traces prevent conclusions respectively about plugin behavior, model-internal checking, promoted-memory activation, actual candidate provenance and exercised benefit. Provider-generated propositions are possible, but their actual truth-apt content, derivations and checks are not determinable from an uninstantiated endpoint. Excluded publication articles remain outside this assessment. These are not system-complete negatives about every possible host behavior.
Consequential source claims are EPI-CLM-associative-recall and EPI-CLM-memory-improvement. Transport admission has a narrower supplied claim: see RT-CLM-ingress-control.
| Entry point or operation | Source path | Coverage and records / limit |
|---|---|---|
| Root dispatch; advertised CLI | package.json |
Direct read: scripts dispatch gateway, setup, migration and Vitest; no CLI bin declared. Boundary supplies tracked-tree evidence that documented Python/CLI implementation is not shipped. No inference from CLI doctrine to an executable evaluator. |
| Library remember, load, clear, forget, recall and shelf removal | src/nuggets/memory.ts, src/nuggets/shelf.ts |
Direct reads of remember/recall/forget, serialization/rebuild/decode/key matching and full shelf; clear supplied by runtime/boundary and test assertions. EPI-RTE-fact-upsert, EPI-RTE-recall-decode, EPI-RTE-recall-score. |
| Numerical cleanup and softmax | src/nuggets/core.ts |
Direct read of seeds, sharpening, CORVACS-lite, similarity normalization, softmax and bind/unbind; EPI-RTE-recall-score. Tests of other arithmetic supplied by boundary, not independently assessed. |
| All registered memory tool actions and lifecycle/input/file/compaction hooks | .pi/extensions/nuggets.ts |
Direct reads of helper wrappers, extraction/rendering, reconstruction, all action dispatch and material hooks. UI rendering and overlay registration supplied by runtime, not a separate truth check. RT-RTE-memory-context, EPI-RTE-preference-capture, EPI-RTE-fact-withdrawal. |
| Kind classification and migration | src/nuggets/kinds.ts, src/migrate-memory.ts |
Direct full reads; EPI-RTE-kind-migration. |
| Compaction promotion | src/nuggets/promote.ts |
Direct full read and extension caller; RT-RTE-memory-promotion. |
| Schedule create/delete/list, prompt supply and confirmation | .pi/extensions/proactive.ts |
Direct full read; RT-RTE-schedule-admission. Gateway admission and removal supplied runtime findings. |
| Message output and heartbeat filtering | src/gateway/router.ts |
Direct full read; RT-RTE-message-turn, RT-RTE-proactive-turn. Other gateway files and mirrored gateway/src/ covered by supplied runtime, not fresh direct reads. |
| Setup and transport admission | src/setup.ts, src/gateway/config.ts |
Supplied runtime findings: configuration/format/allowlist checks, not claim-truth evaluation. No credential-validity finding. |
| Memory regression tests | tests/memory.test.ts |
Direct full read, not run; EPI-RTE-memory-tests. Core tests covered by supplied boundary only; no fresh assessment of their assertion completeness. |
| Public claims and instructions | README.md, NUGGETS_INSTRUCTIONS.md, CLAUDE.md |
README claim passages directly read; remaining instruction claims supplied by boundary/runtime. Doctrine/design, not proof of operation. |
Epistemic-object inventory
| Object ID | Candidate truth-apt content or none | Claimed role | Evidence source ID and local anchor | Gap/limit |
|---|---|---|---|---|
| EPI-OBJ-remember-value | Key/value may assert a scoped fact; arbitrary strings need not do so | see record | SRC-1 src/nuggets/memory.ts |
No live item or evidence provenance supplied. |
| EPI-OBJ-preference-value | A preference attribution may be truth-apt; requested behavior itself is policy | see record | SRC-1 .pi/extensions/nuggets.ts |
Regex does not establish speaker endorsement or preserve surrounding qualification. |
| EPI-OBJ-file-path | Path associated with a read/edit/write event; successful edit is not thereby established | see record | SRC-1 .pi/extensions/nuggets.ts |
Input fields, not checked effects. |
| EPI-OBJ-task-summary | Truncated user text, potentially claims or requests; no actual proposition individuated | see record | SRC-1 .pi/extensions/nuggets.ts |
Not injected through ordinary memory rendering. |
| RT-CMP-hrr-vectors | Numerical encoding of the stored values, not an independently warranted proposition | see record | SRC-1 src/nuggets/memory.ts |
Decoding is associative selection, not factual confirmation. |
| EPI-OBJ-recall-score | Numerical score about relative decode similarity, not probability of world truth | see record | SRC-1 src/nuggets/memory.ts |
No calibration or outcome reference. |
| EPI-OBJ-promoted-entry | Copies a retained value, with the same unresolved truth scope | see record | SRC-1 src/nuggets/promote.ts |
Parseable old entries survive; unsupported prose may not. External reader uninspected. |
| RT-OBJ-cron-jobs | Symbolic scheduling fields and retained prompt, which may contain claims or requests | see record | SRC-1 .pi/extensions/proactive.ts |
Scheduling criteria do not warrant prompt content. |
| RT-CMP-pi-model | Actual generated truth-apt content not determinable | see record | SRC-1 src/gateway/pi-rpc.ts |
External distributed-parametric state; no pinned model or run evidence. |
Authority-route ledger
Fields owned by the linked declaration are given there; the ledger separates consequential functions even when they share an implementation. All implemented routes below are unobserved in this run. “No epistemic license” means the named route supplies no evidence-consuming truth acceptance, not that every imported statement is false.
| 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| EPI-RTE-fact-upsert | content transformation | implemented | EPI-OBJ-remember-value | truth-apt transformation: acquisition/import | Caller value enters store | Trimming/nonempty and case-insensitive key rules; string domain | see record | New value or replacement | Enforcing write rule | Imported warrant unknown; no source check | Permits later use as a fact | see RT-BAP-facts-prompt | SRC-1 src/nuggets/memory.ts |
none | none | Model authorship/provenance outside store. |
| EPI-RTE-fact-upsert | retention | implemented | EPI-OBJ-remember-value | no content change | In-memory facts to JSON | autoSave or explicit save | see record | Durable strings/configuration | Filesystem replacement | Retention, not acceptance | Makes values reloadable | Library/extension; JSON load; permissive; later invocations | SRC-1 src/nuggets/memory.ts |
none | none | No evidence links or endorsement added. |
| EPI-RTE-preference-capture | content transformation | implemented | EPI-OBJ-preference-value | truth-apt transformation: indeterminate | Input fragment becomes preference/learning | First regex match, truncation and key generation | see record | Selected fragment and generated key | Enforcing extraction | General preservation not established; specific negated context can be lost | Admits text without per-item review | see RT-BAP-facts-prompt | SRC-1 .pi/extensions/nuggets.ts |
none | Semantic-loss witness | Cannot call every extraction a faithful acquisition or a conjecture. |
| RT-RTE-memory-context | retention | implemented | EPI-OBJ-file-path | truth-apt transformation: acquisition/import | Tool path input to fact | Named tool and string path, not success status | see record | Basename-keyed path | Enforcing capture | Warrant degraded if read as successful work | Makes path available as Active Files | see RT-BAP-facts-prompt | SRC-1 .pi/extensions/nuggets.ts |
none | none | Basename collisions overwrite; no effect oracle. |
| RT-RTE-memory-context | content transformation | implemented | EPI-OBJ-task-summary | truth-apt transformation: indeterminate | Last three selected user texts to 200 characters | Fixed slicing; no semantic evaluator | Before host compaction; see record | _task plus selected local file paths |
Enforcing retention/selection | No semantic-summary license | Saves selected text; host compaction remains external | Shelf later recall/list; permissive; later invocations; ordinary prompt excludes _task |
SRC-1 .pi/extensions/nuggets.ts |
none | none | Omitted qualifications possible; not a model-generated summary. |
| EPI-RTE-recall-decode | content transformation | implemented | RT-CMP-hrr-vectors | truth-apt transformation: non-ampliative reshaping | Facts to numeric vocabulary/banks and selected value | Fixed seeded encoding, unbinding, numerical cleanup | see record | Existing vocabulary string or unresolved query | Numerical transformation | No novel factual entailment or truth check | Produces candidate recall result | Library/extension; recall result; permissive; current request | SRC-1 src/nuggets/memory.ts |
EPI-CLM-associative-recall | none | Selection may associate wrong stored value; source truth unchanged. |
| EPI-RTE-recall-score | check/evidence production | implemented | EPI-OBJ-recall-score | no content change | Query/key match and value-vector similarity | Exact/substring/token/fuzzy selector; cosine/softmax over finite stored vocabulary | see record | found flag, confidence and margin | Ranking and match gate | Only within matching/decoding domain, not truth calibration | Enables result delivery and cross-store ranking | see record | SRC-1 src/nuggets/memory.ts |
EPI-CLM-associative-recall | Confidence is not warrant | No accuracy threshold on returned softmax score. |
| RT-RTE-memory-context | operational admission/selection/consumption | implemented | EPI-OBJ-remember-value | no content change | Shelf result or local substring fallback; prompt formatting | Highest confidence across ordered kinds; ties retain earlier result; local fallback only if shelf fails | see record | Answer with confidence/source label or selected facts in system prompt | Ranking/permissive context | No evidence-consuming acceptance | Supplies retained text to model before another source check | see RT-BAP-facts-prompt | SRC-1 src/nuggets/shelf.ts |
none | Priority is not first-kind-only | Model receives value and coarse kind/name, not original evidence lineage. |
| EPI-RTE-fact-withdrawal | disposition/acceptance | implemented | EPI-OBJ-remember-value | no content change | Key deletion, not truth acceptance | Model-requested forget; local delete OR shelf delete | see record | Local deletion can skip durable deletion | Enforcing locally, incomplete durable withdrawal | No falsity judgment or acceptance | Can remove current injection while retained copy remains | see record | SRC-1 .pi/extensions/nuggets.ts |
none | Retraction gap | History reconstruction and promotion can retain older copies. |
| EPI-RTE-kind-migration | lineage/freshness/recovery | implemented | EPI-OBJ-remember-value | truth-apt transformation: non-ampliative reshaping | Legacy file to kind stores | Prefix/value heuristic and case-insensitive merge | see record | Buckets; incoming value wins conflict; backup/archive | Enforcing file update | No additional warrant | Changes which default-kind consumer finds an entry | see record | SRC-1 src/migrate-memory.ts |
none | none | Preserves/max-merges counters, not evidential provenance. |
| RT-RTE-memory-promotion | check/evidence production | implemented | EPI-OBJ-promoted-entry | no content change | Entry hit count at least three | Deterministic usage threshold, not truth criterion | see record | Candidate qualifies or not | Selection gate | Reuse count only | Permits promotion writer | Writer; hits field; enforcing; compaction event | SRC-1 src/nuggets/promote.ts |
EPI-CLM-memory-improvement | Ordinary recall omits session ID | Distinct-session uniqueness is not globally tracked. |
| RT-RTE-memory-promotion | retention | implemented | EPI-OBJ-promoted-entry | truth-apt transformation: non-ampliative reshaping | Selected entries to Markdown | Existing recognized sections/entries merged with candidates | see record | Rewritten MEMORY.md |
Conditional file write | Not lifecycle integration after acceptance | Offers text for intended external context | External Claude reader; Markdown; intended advisory force; later sessions unestablished | SRC-1 src/nuggets/promote.ts |
EPI-CLM-memory-improvement | Host consumption uninspected | Old promoted values are not removed when source is absent; free-form prose can disappear. |
| EPI-RTE-memory-tests | check/evidence production | implemented | EPI-OBJ-remember-value | no content change | Fixture-defined memory behavior | Vitest assertions against explicit expected outputs | see record | Would pass/fail assertions | Test-run failure only | Fixture behavior domain, not world truth | No shipped fact-admission consumer | Developer; test result; advisory to development; no runtime acceptance path | SRC-1 tests/memory.test.ts |
none | none | Not executed; no causal benefit finding. |
| RT-RTE-schedule-admission | operational admission/selection/consumption | implemented | RT-OBJ-cron-jobs | non-truth-apt policy/content update: scheduled future request | Append success versus job admission | Extension shell exit versus gateway fields/default JID | see record | Confirmation before acceptance; possible later rejection | Local operational gate | Does not warrant confirmation of actual scheduled delivery | Can create/delete retained prompts for later Pi turns | see RT-BAP-scheduled-prompt | SRC-1 .pi/extensions/proactive.ts |
none | Confirmation exceeds checked scope | Intended time, recipient and completion not checked by an oracle. |
| RT-RTE-proactive-turn | operational admission/selection/consumption | implemented | RT-OBJ-cron-jobs | no content change | Model response admitted to outgoing chat | For heartbeat: nonempty and does not contain NOTHING, case-insensitive | see record | Send or suppression | Enforcing output filter | No relevance/truth acceptance | Allows or suppresses delivery | Router; response text; enforcing; current proactive turn | SRC-1 src/gateway/router.ts |
none | Substring sentinel | Nothing failed; deployment succeeded is suppressed by deduction, not observed execution. |
No lifecycle integration after evidence-consuming truth acceptance was found in the inspected local memory routes: see EPI-ABS-truth-acceptance. This is distinct from implemented retention, retrieval and operational use.
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 |
|---|---|---|---|---|---|---|---|---|
| EPI-CLM-associative-recall | see record | SRC-1 README.md; doctrine/design |
see record | EPI-RTE-recall-decode, EPI-RTE-recall-score | None supplied | No benchmark, intervention or calibrated error data | Algebraic retrieval from finite stored vocabulary is implemented; tests assert selected examples | Speed/accuracy not established. Stored fact truth is outside numerical cleanup's domain. |
| EPI-CLM-memory-improvement | see record | SRC-1 README.md; doctrine/design |
see record | RT-RTE-memory-promotion, RT-RTE-memory-context | None supplied | No later behavior, cost/latency baseline or component variation; external reader missing | A conditional hit-selected context writer and independent per-turn memory injection exist | Ordinary extension recall does not accrue hits. Permanent every-session context and faster/cheaper behavior exceed evidence. |
Bounded conclusion
Nuggets acquires caller strings and user/tool fragments, persists symbolic records and deterministically reconstructs numerical HRR state. Recall selects among stored strings; it is neither a source-truth oracle nor a route to new entailed world claims. The confidence field measures relative decoding scores. Numeric cleanup changes signals, not evidential support. See EPI-RTE-fact-upsert, EPI-RTE-recall-decode and EPI-RTE-recall-score.
The routes can carry truth-apt facts, preference attributions and file-context claims, but they do not retain claim-specific source evidence. Explicit imports have unknown warrant. Automatic extraction can degrade it: surrounding negation and attribution are not checked, file captures need not reflect successful work, and the task excerpt truncates without a semantic check. Actual model-generated conjectures and provider-internal evaluation remain not determinable; source text permits no attribution of a particular candidate to that opaque processing. See EPI-RTE-preference-capture and the object inventory.
Operational reliance is concrete and separate from epistemic acceptance. Prompt injection supplies selected facts unsolicited on later turns; requested recall delivers selected values with a coarse source label. User preferences can directly shape requested policy without a truth-apt transformation. Neither route enforces compliance or demonstrates improved future action. Key replacement, migration and promotion change retained context without evidence-consuming truth acceptance. Forget is not a reliable cross-copy retraction. See RT-BAP-facts-prompt, EPI-RTE-kind-migration, EPI-RTE-fact-withdrawal and EPI-ABS-truth-acceptance.
Three hits are an operational selection criterion for intended permanent context, not a criterion accepting a proposition as true. The writer retains selected values and parseable old entries; the supplied boundary does not include actual Claude read-back. Even hit counting tracks only the last session ID, not the set of sessions; alternating two IDs can repeatedly increment it. Replacing a value does not reset its counter. These counterexamples limit the claim independently of ordinary extension calls' missing session ID. See RT-RTE-memory-promotion, EPI-RTE-fact-upsert and EPI-CLM-memory-improvement.
Scheduling and output filters have consequential but non-epistemic authority. Append success licenses a creation confirmation before gateway admission, and heartbeat substring filtering can suppress meaningful text without judging its truth or relevance. Test source supplies expected-answer oracles for fixtures, but no runtime fact-admission consumer or executed success evidence. See RT-RTE-schedule-admission, RT-RTE-proactive-turn and EPI-RTE-memory-tests.
For the README's self-improvement claim, the assessment boundary is the shipped context-selection machinery across future sessions; its independently specifiable objective is lower time and cost for useful action. Usage evidence can select a context write, but usefulness is not evaluated; later host reading and behavior causally depending on that write are unestablished. This supports a conditional improvement-directed context pathway, not exercised or successful self-improvement. Learning benefit, content-directed criticism, reflection and autonomous theory-building do not follow from persistence or autonomous writes. Provider cognition remains uninspected rather than absent. These independent limits do not negate the implemented memory and policy-supply routes.
Shared records
Operative objects
EPI-OBJ-remember-value
Label: Remember value
Part of: RT-RTE-memory-context
This is the explicit caller-authored value handled inside that integration route (object within a route, not a duplicate route). Natural-language values can carry propositions or instructions; keys are symbolic routing/matching units. Storage is the local Map, tool-result snapshots and shelf JSON facts. Content truth depends on the actual key/value and scope; none was supplied. SRC-1 src/nuggets/memory.ts, .pi/extensions/nuggets.ts; load-bearing admission passage in EPI-RTE-fact-upsert.
EPI-OBJ-preference-value
Label: Preference value
Part of: RT-RTE-memory-context
A distinct automatically extracted natural-language fragment and generated symbolic preference/learning key. It is stored in local facts and user-kind JSON, rendered as Preferences or Learnings, and interpreted by Pi/model. It differs from the explicit value by producer and extraction checks. SRC-1 .pi/extensions/nuggets.ts; passages in EPI-RTE-preference-capture.
EPI-OBJ-file-path
Label: File path
Part of: RT-RTE-memory-context
Symbolic path input captured under basename-derived keys, persisted by tool-result hooks to project memory and held locally; compaction also copies selected calls' paths locally. Paths are fixed string inputs to capture, then natural-language Active Files context to the model. This records association with attempted operations, not checked filesystem effects. SRC-1 .pi/extensions/nuggets.ts.
if (event.toolName === "read") { facts.set(
file:${basename}, filePath); shelfRemember(file:${basename}, filePath, "project"); } else if (event.toolName === "edit" || event.toolName === "write") { facts.set(edited:${basename}, filePath); shelfRemember(edited:${basename}, filePath, "project"); } ---.pi/extensions/nuggets.ts
EPI-OBJ-task-summary
Label: Task summary
Part of: RT-RTE-memory-context
Natural-language excerpt stored under symbolic _task in local facts and project JSON before host compaction. It is not an inferred summary; it may contain requests rather than claims. Ordinary injection excludes underscore-prefixed entries. Recall or explicit listing can still expose it. SRC-1 .pi/extensions/nuggets.ts.
const taskSummary = userMessages.slice(-3).join(" | ").slice(0, 200); facts.set("_task", taskSummary); shelfRemember("_task", taskSummary, "project"); ---
.pi/extensions/nuggets.ts
EPI-OBJ-recall-score
Label: Recall score
A symbolic numeric result (confidence, margin, found) held transiently in return objects and formatted into tool text. It is a distinct part of the memory integration's recall result, not the retained value or RT-CMP-hrr-vectors. Scope includes direct library callers, so it is not wholly contained in the extension integration. SRC-1 src/nuggets/memory.ts; passages in EPI-RTE-recall-score.
EPI-OBJ-promoted-entry
Label: Promoted entry
Part of: RT-RTE-memory-promotion
Natural-language value under a section/key in MEMORY.md, with Markdown providing localized organization. This object is the output part of the supplied route, not a second declaration of that route. Intended consumer is external Claude; actual loading is not inspected. SRC-1 src/nuggets/promote.ts.
for (const [key, value] of entries) { lines.push(
- **${key}**: ${value}); } ---src/nuggets/promote.ts
Routes
EPI-RTE-fact-upsert
Label: Fact upsert
The library route accepts caller key/value → trimmed fact list → optional JSON save. It overlaps the explicit-write step of RT-RTE-memory-context, but also admits direct library writes, so it is not the same referent or wholly contained there. Owner is deterministic library code; caller/model proposes content. It checks empty strings, not truth, with no per-content human veto or answer oracle. Mode is ordinary open use; replacement and optional oldest-entry eviction are admission policy. Caller may overwrite/forget; no evidential rollback decision exists. Extension guidance asks for useful discoveries and short values, not evidence-bearing acceptance.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return:
rememberreturns void; extension separately reports remembered content. - Later read-back: Saved JSON reloads values for reconstruction, recall and prompt supply.
- Delegated visibility: Library receives strings, not underlying source evidence; extension/model later receives selected text.
- Selection predicate: Trimmed nonempty fields; case-insensitive key update; optional maximum-facts tail.
- Invalidation or expiry: Value replacement, forget/clear or optional oldest-entry eviction; updates retain prior hit metadata.
- Activation or effect: Facts and optionally disk content change; no observed downstream behavior.
- Evidence limits: No live content, provenance or success traces. Classification is import at the store edge; caller production may be model-generated but is not inspected here.
SRC-1 src/nuggets/memory.ts, .pi/extensions/nuggets.ts.
key = key.trim(); value = value.trim(); if (!key || !value) return; ---
src/nuggets/memory.tsif (f.key.toLowerCase() === key.toLowerCase()) { f.value = value; found = true; break; } ---
src/nuggets/memory.tsmax_facts: this.maxFacts, facts: this._facts, config: { ---
src/nuggets/memory.ts
EPI-RTE-preference-capture
Label: Preference capture
Part of: RT-RTE-memory-context
Input text → first matching preference/learning expression → generated key/truncated value → local and user shelf writes. Owner is extension code, not an explicit model judgment. Non-extension input triggers automatic admission, without per-item human approval, oracle or semantic veto. Mode is ordinary use; source patterns supply all guidance. Overwrite/forget can change retained material, subject to the withdrawal limits below.
Concrete static trace: the input Do not remember that deployment is safe matches the unanchored remember that pattern. Captured value is deployment is safe; short key is deployment-is-safe; retained key is learn:deployment-is-safe. Rendering places that value under Learnings, without the negated instruction. The input does not entail endorsement of deployment safety. This is an implementation deduction, not a target execution or evidence that such an item exists. General extraction is classified indeterminate: an unqualified actual preference can be faithfully imported, while negation, quotation and truncation can change apparent meaning. Actual input/context is required to decide each edge.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: Input hook continues the event after automatic local/shelf update.
- Later read-back: User-kind facts hydrate local state and reach future prompt rendering or recall.
- Delegated visibility: Later model receives generated preference/learning key and value, not the original surrounding input.
- Selection predicate: First matching regex; captured value trimmed and limited to 100 characters; key derived from first 30.
- Invalidation or expiry: Same-key overwrite or deletion; no stored link allowing automatic withdrawal when original context changes.
- Activation or effect: Automatic retention and potential prompt supply are wired; actual model reliance is unobserved.
- Evidence limits: Deterministic counterexample refutes universal semantic preservation; it does not establish every extraction is ampliative.
SRC-1 .pi/extensions/nuggets.ts.
{ regex: /\bremember that (.+)/i, prefix: "learn" }, ---
.pi/extensions/nuggets.tsconst value = match[1].trim().slice(0, 100); const shortKey = value.slice(0, 30).replace(/\s+/g, "-").toLowerCase(); return { key:
${prefix}:${shortKey}, value }; ---.pi/extensions/nuggets.tsconst pref = extractPreference(event.text); if (pref) { facts.set(pref.key, pref.value); shelfRemember(pref.key, pref.value, "user"); } ---
.pi/extensions/nuggets.ts
EPI-RTE-recall-decode
Label: Recall decode
Library facts → unique value vocabulary/seeded vectors → superposed banks → unbinding/cleanup → best vocabulary string. Fixed code owns the route. Distinct from the supplied RT-CMP-hrr-vectors, which identifies its numerical state, and broader than the extension-only integration in RT-RTE-memory-context. Values update the representation during operation, but there is no provider-weight training here. Algorithm is frozen; exact live vectors depend on unsupplied facts/configuration. No mutable model endpoint is used by this route.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: Selected existing vocabulary word, score/margin and matched key, or empty result.
- Later read-back: Facts/configuration are persisted; vectors are reconstructed rather than serialized. Returned answer is not automatically saved as a novel fact.
- Delegated visibility: Caller receives a string/result, not the full vector banks or source evidence.
- Selection predicate: Key resolution followed by maximum softmax score among stored unique values.
- Invalidation or expiry: Dirty state triggers rebuild after mutations; removing all facts clears numerical state.
- Activation or effect: Produces a recall candidate; extension may deliver it as tool text.
- Evidence limits: Selection is non-ampliative at the vocabulary edge but can misassociate a key/value. No truth check, benchmark or observed accuracy follows.
SRC-1 src/nuggets/memory.ts, src/nuggets/core.ts.
// Build vocabulary from unique values const seen = new Set
(); const vocab: string[] = []; for (const f of this._facts) { if (!seen.has(f.value)) { vocab.push(f.value); seen.add(f.value); } } this._vocabWords = vocab; --- src/nuggets/memory.tsreturn { word: this._vocabWords[bestIdx], sims: simsSum, probs }; ---
src/nuggets/memory.ts
EPI-RTE-recall-score
Label: Recall score
Query/keys and decoded numerical vector → match decision plus similarity-derived score → shelf ranking and tool display. This is the evaluator part of recall, distinct from EPI-RTE-recall-decode's string-producing transformation; both overlap RT-RTE-memory-context but include direct library consumers. Target/domain: query-to-key lexical resemblance and reconstructed signal-to-vocabulary similarity, not a proposition about the world. Program rules perform evaluation; no model/human truth judgment, reference world answer or per-item veto occurs. Ordinary open recall is the operating mode.
A static single-value case exposes the license boundary: a sole stored value is the only vocabulary candidate, so softmax has no competing factual alternative. Its near-one normalized score cannot establish that value is true. Key matching also has its own gate; a high score cannot rescue an unresolved key. Conversely a resolved key returns found: true without requiring a minimum confidence or margin. Across kinds, recallInOrder retains the greatest confidence, not simply the first matching kind. Earlier kind order matters on ties.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: Found flag, confidence from top probability, and top-two margin.
- Later read-back: Scores are not retained as evidence; with a nonempty session ID the matched key's usage counter is saved for possible promotion.
- Delegated visibility: Model sees answer and rounded confidence/coarse source label; margin is not included in that extension text.
- Selection predicate: Exact/substring then token overlap at least 0.5 then fuzzy threshold; within values use maximum softmax; across shelves use greatest confidence.
- Invalidation or expiry: Recomputed from current facts/configuration; counters remain on value replacement and deduplicate only against the last session ID.
- Activation or effect: Match gates and confidence ranking can change returned content; usage counters can qualify entries for promotion.
- Evidence limits: No calibration, world-truth criterion or executed accuracy/benefit comparison. Numerical cleanup's target is signal magnitude; default sharpening and CORVACS-lite can be identity functions.
SRC-1 src/nuggets/memory.ts, src/nuggets/shelf.ts, src/nuggets/core.ts, .pi/extensions/nuggets.ts.
const probs = softmaxTemp(simsSum, this._tempT); let bestIdx = 0; for (let i = 1; i < V; i++) { if (probs[i] > probs[bestIdx]) bestIdx = i; } ---
src/nuggets/memory.tsreturn { answer: word, confidence, margin, found: true, key: tag }; ---
src/nuggets/memory.tsif (!best.found || result.confidence > best.confidence) { best = { ...result, nugget_name: name }; } ---
src/nuggets/shelf.tsif (p === 1.0) return z; ---
src/nuggets/core.tsif (a <= 0) return z; ---
src/nuggets/core.ts
EPI-RTE-fact-withdrawal
Label: Fact withdrawal
Part of: RT-RTE-memory-context
Explicit forget request → key requirement → short-circuit local/shelf deletion → report. This disposition part does not judge falsity. Model/caller proposes key, extension chooses deletion path, with no separate human veto or oracle. Mode is ordinary open use. Recovery is later overwrite/reload, not an atomic cross-copy withdrawal. Supplied runtime already identifies the short-circuit; additional direct inspection shows reconstruction merges positive snapshots without deletion tombstones.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: Reports Forgot if either attempted branch returns true; details contain only remaining current local facts.
- Later read-back: Session start can hydrate the undeleted shelf value; branch reconstruction can retain earlier snapshot keys absent from later snapshots.
- Delegated visibility: Model sees success text and remaining snapshot, not a cross-store withdrawal receipt.
- Selection predicate: Required key; local exact-key delete first, shelf helper only on false.
- Invalidation or expiry: No cascading removal of promoted Markdown; shelf deletion may remove only the first matching kind; history has no explicit tombstone for normal forget.
- Activation or effect: Local prompt content can change immediately while future shelf/history read-back revives it.
- Evidence limits: Static reachability, not an observed reappearance. Library direct forget does remove matching case-insensitive facts, so not every deletion fails.
SRC-1 .pi/extensions/nuggets.ts, src/nuggets/memory.ts; short-circuit passage supplied in RT-RTE-memory-context.
for (const [k, v] of Object.entries(details.facts)) { if (v) { facts.set(k, v); } else { facts.delete(k); } } ---
.pi/extensions/nuggets.ts
EPI-RTE-kind-migration
Label: Kind migration
Operator-launched legacy JSON → backup → heuristic buckets → case-insensitive merge into kind JSON → archive. Distinct from the supplied extension/promotion routes; runtime mentions this driver without declaring a matching route. Code owns classification/admission, operator starts the operation but does not approve individual facts. Guidance is key prefixes/value slash matching; no truth oracle or content criticism. Ordinary maintenance, not a bounded improvement experiment. Backups permit manual recovery; no automatic rollback on partial write is implemented.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: Console paths/counts, or an early no-file return.
- Later read-back: Default-kind stores are loaded by the shelf and consumed by extension recall/hydration.
- Delegated visibility: Later reader sees the winning value and merged usage metadata, not the displaced alternative or merge rationale.
- Selection predicate:
inferMemoryKind; same lowercased key merges, incoming value wins, hits become maximum. - Invalidation or expiry: Legacy file archived after writes; backup retained. Subsequent writes can replace resulting values.
- Activation or effect: Reorganizes retained claims and can resolve conflicts by overwrite without evaluating their truth.
- Evidence limits: No live legacy file or migration trace; pure values are reshaped/selected, not accepted or semantically derived.
SRC-1 src/migrate-memory.ts, src/nuggets/kinds.ts.
target[idx] = { key: incoming.key, value: incoming.value, hits: Math.max(existing.hits ?? 0, incoming.hits ?? 0), last_hit_session: incoming.last_hit_session || existing.last_hit_session || "", }; ---
src/migrate-memory.ts
EPI-RTE-memory-tests
Label: Memory tests
Developer-triggered Vitest → constructed memory fixtures → assertions. This evaluator route has no supplied canonical counterpart; boundary lists it as inspected test source, while runtime declares production routes. Test authors supply reference expected outputs, code judges results, developer can revise/reject changes; no automatic admission into the running memory store follows. Mode is bounded fixture tests, triggered by the package test script, not an online improvement loop. Target/domain: specified remember/recall/upsert/forget/save/load/hit-count/matching behavior for finite examples.
- implementation conclusion status: wired
- operation conclusion status: uninspected
- Immediate return: Would pass/fail assertions under Vitest; not executed here.
- Later read-back: inapplicable — test results are not wired to retained fact admission or later model prompts.
- Delegated visibility: Test runner receives fixture state and expected values; production model receives no test certificate.
- Selection predicate: Shipped test cases and explicit assertions, not random user claims or source evidence.
- Invalidation or expiry: Fixtures are recreated per test and temporary directories removed; no production rollback consumer.
- Activation or effect: Assertions can fail a developer test command, not block ordinary remember calls.
- Evidence limits: Source assertion existence does not establish passing execution, broad generalization or factual truth of arbitrary retained content.
SRC-1 tests/memory.test.ts, package.json.
n.remember("color", "blue"); const result = n.recall("color"); expect(result.found).toBe(true); expect(result.answer).toBe("blue"); expect(result.confidence).toBeGreaterThan(0); ---
tests/memory.test.ts
Claims
EPI-CLM-associative-recall
Label: Associative recall
Claim: HRR stores individually retrievable facts and recall is algebraic/sub-millisecond. SRC-1 README.md, doctrine/design. Distinct from RT-CLM-ingress-control, whose subject is transport admission. Implementation supports finite-vocabulary associative recall, not a calibrated knowledge warrant or measured speed.
- Holographic memory — facts are stored as superposed complex-valued vectors using Holographic Reduced Representations (HRR). Recall is algebraic, sub-millisecond, and runs locally with zero external dependencies. ---
README.md
EPI-CLM-memory-improvement
Label: Memory improvement
Claim: repeated recalls promote a fact to permanent context, making the agent faster and cheaper. SRC-1 README.md, doctrine/design. It overlaps the subject of RT-RTE-memory-promotion but is a claim about its effect, not that route's implementation identity; no matching supplied claim exists.
The writer selects three-hit entries and reconstructs recognized Markdown sections. This creates operational placement without truth acceptance. Additional static counterexamples: last_hit_session deduplicates only consecutive identical IDs, so alternating A/B/A can count three hits from two distinct sessions; upsert changes value without resetting that key's hits. Existing promoted keys remain when source facts disappear. Parsing accepts only section headers and formatted fact lines: given existing free prose plus a new qualifying candidate, the rewrite can omit the prose. No automatic withdrawal linkage exists.
- Self-improving — when a fact is recalled 3+ times across sessions, it gets promoted to permanent context. The agent gets faster and cheaper over time. ---
README.mdif (fact.last_hit_session !== sessionId) { fact.hits = (fact.hits || 0) + 1; fact.last_hit_session = sessionId; if (this.autoSave) this.save(); } ---
src/nuggets/memory.tsconst factMatch = stripped.match(/^-\s+**(.+?)**:\s*(.+)$/); if (factMatch && currentSection) { sections[currentSection][factMatch[1].trim()] = factMatch[2].trim(); } ---
src/nuggets/promote.ts
Threshold and ordinary-call evidence: see RT-RTE-memory-promotion. Proposed self-change is context selection over future sessions; lower action time/cost is the separately stated objective. Use evidence can shape selection and a file can change, but usefulness assessment, external loading and later causal dependence are not established. No exercised self-improvement or benefit attribution follows.
Evidenced absences
EPI-ABS-truth-acceptance
Label: Truth acceptance
- implementation conclusion status: absent
Bounded absence: no evidence-consuming decision accepting a truth-apt value against a named truth/reliability criterion for a stated use/scope was found in the local memory implementation and extension routes inspected at SRC-1's frozen revision. Search boundary: src/nuggets/memory.ts, src/nuggets/shelf.ts, src/nuggets/kinds.ts, src/nuggets/promote.ts, src/migrate-memory.ts, material dispatch/hooks in .pi/extensions/nuggets.ts; test comparison in tests/memory.test.ts. Inspection question was whether any return/write/rejection branch consumes evidence about candidate truth rather than nonemptiness, key/string resemblance, signal similarity or usage count. The routes above enumerate those actual checks and consumers. Load-bearing passages: EPI-RTE-fact-upsert, EPI-RTE-recall-score and supplied RT-RTE-memory-promotion.
This is distinct from any supplied record: runtime declared no absence. It supports absence of local evidence-consuming truth acceptance and hence of lifecycle integration after such acceptance in these inspected paths. It does not deny that an external model/user may evaluate content before proposing a write, or that hosted tools may return evidence; those internal processes and actual cases are uninspected. It also does not deny operational admission, regression-test evaluation, policy supply or useful recall.