PhillNet Recall 1.2.0 — Grounded memory. Complete evidence. 24 policies and 12,128 packed bytes.

PhillNet Recall 1.2.0 · Grounded Memory

Remember the evidence. Keep the connection.

By Phillip A. Holland Jr. / ayjays132 · Apache-2.0 · Local-first · No new neural training

Quick start · Publish to Hugging Face · Architecture · Measured results

What is this?

PhillNet Recall is a custom-library external memory system and compact policy checkpoint. It stores source evidence, retrieves related notes, follows supplied relationships, preserves explicit corrections and historical validity, and assembles context without silently dropping dependencies.

1.2 adds three substantive capabilities: scope-local terminology bridges that can change without editing weights; positive conjunctive queries across memories; and bounded search for smaller complete evidence packets. An authenticated API, standard-library Python client, release verifier, wheel and separate Docker Space showcase are included.

It is not a generative LLM, embedding model, KV-cache replacement, unrestricted semantic parser, universal animal translator, or a demonstrated state-of-the-art memory product. The weight bank is part of a hybrid executable system: storage, parsing, joins, budgets, glossaries and certificates are ordinary software outside the neural records. Matching a note does not establish that it is true.

At a glance

Item This release
Intended Hub model repository ayjays132/PhillNet-Recall
Intended demo Space ayjays132/PhillNet-Recall-Demo
Package phillnet-recall, version 1.2.0
Neural policies 24 complete records, 500 bytes each
Packed checkpoints 12,128 bytes, including two headers
Architecture Each policy: 20 inputs → 20 ReLU units → 1 score
Numerical parameters 10,584 across the two banks
Core dependencies Python 3.10+ standard library; optional C99 CPU scorer
New training or distillation None
Previous banks Both preserved byte-for-byte from 1.1
Personal evidence Private application database, not part of the Hub checkpoint
Publication Packaged; not uploaded by this build

12 KB is the policy payload, not total RAM. Source text, SQLite, indexes, graph views, proof alternatives and Python require additional storage and computation. The HF card's custom-code tag describes the installed local library. Loading a policy does not require or use trust_remote_code=True.

1. Add terminology as evidence, not an untraceable global synonym

An application can supply a scoped mapping:

In project Nova, “amber docket” is the query phrase used for “incident register.”

The mapping is stored as a regular source-backed record. Retrieval can then find an incident note using the unfamiliar term. The selected note carries the mapping record as a dependency. Correction, deletion, TTL and historical time handling apply to the mapping just as they apply to other evidence.

from phillnet_recall import RecallMemory, pack_grounded

with RecallMemory('recall.sqlite3', tenant='phillip', namespace='nova') as memory:
    memory.remember_bridge(
        'amber docket', 'incident register',
        source='operator:approved-glossary',
    )
    memory.remember(
        'Nova incident register: Mira handles escalation.',
        source='incident-record:11',
    )
    result = memory.recall_grounded('Nova amber docket', top_k=1)
    packet = pack_grounded(memory, result, budget=8192)
    print(packet['text'])

This is new supplied information, not automatic discovery of meaning. A wrong mapping can retrieve the wrong note. Conflicting mappings fail closed; unrelated namespaces do not inherit each other's terminology. Without a tokenizer, budget is UTF-8 bytes. Returned notes are not labeled as inferred answers.

2. Combine constraints across supplied relationships

plan = {
    'where': [
        {'entity': '?service', 'predicate': 'region', 'value': 'west'},
        {'entity': '?service', 'predicate': 'owner', 'value': 'Mira'},
    ],
    'select': ['?service'],
}
result = memory.query(plan)

With the corresponding supplied facts, this returns the services satisfying both conditions and the complete supporting records. Up to six positive atoms are supported. Variables unify exact case-sensitive values. This is not arbitrary natural-language-to-query translation.

The query certificate includes a digest of the eligible scope. Adding a new matching service invalidates an old exhaustive result even though its old positive support may not have changed. A no_matches result describes the queried store, not the absence of an entity or fact in the world.

3. Spend context on complete support

Different answers may have proofs that share large source records. The earlier packer chose the shortest proof for each answer independently. The new optimizer searches combinations of complete proofs and counts the actual serialized packet, paying for shared record IDs only once.

The default bound is 4,096 combinations. optimal=true means that the complete candidate choice space was examined; it is not asserted after a search cutoff. A feasible complete packet may be returned with optimal=false. If the search cap prevents finding a fitting packet, search_exhausted is distinct from a proven budget_exceeded result. No incomplete proof is emitted to make a number look good.

Executed results

These are project-authored synthetic tests, not independent real-world benchmark results. No fixture changed neural weights. The glossary ablation adds explicit information, so it does not isolate a neural architecture advantage.

Measurement Observed result
Local regression tests 377/377
All 24 policies: native/reference numerical probes 3,120/3,120 exact
New terminology cases, without supplied bridges 4/96 correct at rank one
Same cases, supplied bridges + neural policy 96/96
Same cases, supplied bridges + conventional policy 96/96
Candidate notes per terminology case 24
Retrieved notes packed with their mapping dependencies 96/96
Randomized conjunctive queries matching a separate set oracle 128/128
Constructed shared-proof cases with smaller complete context 40/40
Median reduction in serialized bytes on those 40 cases 32.17%
Unsupported meaning controls without mappings 4/4 correctly return unknown
96 synthetic queries: 4 first-place hits without the supplied glossary, 96 with it, and 96 with equivalent conventional scoring. Additional information is explicitly supplied.

The 96 cases vary opaque terminology and distractors within the same constructed family. The 128 relational cases are random finite graphs, not external knowledge questions. The 40 packing cases deliberately contain shared dependencies; the 32.17% is not a prediction of average savings on user conversations. UTF-8 byte reduction is not necessarily the same percentage of tokens or billed inference cost.

Neural and equivalent conventional retrieval scoring tie. Joins and proof completeness are enforced by the host algorithms. These results do not establish neural reasoning superiority, general semantic retrieval, or world-leading quality.

Raw fixtures/results · Local HTTP evidence · Report provenance

Installation and serving

Install the supplied wheel, or enter the source repository and run:

python -m pip install .
python examples/demo_v12.py

The portable wheel includes the exact Python reference scorer. To compile the optional native kernel from the source release on the tested Linux environment:

python scripts/build_native.py

For a private application service:

python -m pip install '.[server]'
# Set PHILLNET_RECALL_API_KEY locally to a random 32+ character secret.
python -m phillnet_recall --db data/recall.sqlite3 --tenant phillip serve --port 8000

The authenticated endpoints include /v1/memories, /v1/search, /v1/recall, /v1/paths, /v1/bridges, /v1/grounded-search, /v1/grounded-context, /v1/query, and /v1/query-context. The default bind is localhost. TLS, ingress rate limits, appropriate application authorization, backups and encrypted storage remain the host's responsibility. This is one configured tenant/namespace per API process.

import os
from phillnet_recall import RecallClient

client = RecallClient(
    'http://127.0.0.1:8000',
    api_key=os.environ['PHILLNET_RECALL_API_KEY'],
)
print(client.grounded('Nova amber docket'))

The client accepts HTTPS for remote service origins and refuses credential-bearing redirects. It does not log credentials or memory payloads in HTTP error messages.

Hugging Face: model and Space are different artifacts

The model repository contains the policy data, source, installable package, model card, tests and release manifest. It is not advertised as a standard text-generation endpoint. The separate ready-to-upload Docker Space demonstrates four fixed synthetic cases using the actual library, with a fresh in-memory store per request. It accepts no personal memory content.

python scripts/verify_release.py
python scripts/publish_hf.py                 # dry run: no network or upload
hf auth login                               # authenticate locally
python scripts/publish_hf.py --publish       # creates a new private model repo

Add --public only when public creation is intended. Existing repositories are not overwritten and their audiences are not changed. The manifest protects the allowlisted release bytes; it is not a digital signature. See the separate Space publication commands in HF_PUBLICATION.md.

After publication and local package installation:

from phillnet_recall import RecallPolicy, RecallMemory
policy = RecallPolicy.from_pretrained(
    'ayjays132/PhillNet-Recall', revision='YOUR_REVIEWED_COMMIT_SHA')
memory = RecallMemory('recall.sqlite3', policy=policy, tenant='me')

Only checkpoint data files are downloaded. Remote downloading and live Hub rendering were not tested here; local save/load is tested.

Host-model compatibility

Recall is external to model weights and KV caches. It can provide JSON evidence, plain-text context, or an application-facing API to a host with a compatible input adapter. This is a framework boundary, not certification of every model. Actual host-tokenizer input budgets can be checked by the supplied prompt adapters.

GPT-2 and Qwen3.5-0.8B tests were invoked but did not generate answers because Transformers was unavailable in the build environment; checkpoint network access also failed. Explicit not_run receipts are preserved. No model answer accuracy, reader improvement or cross-model parity is claimed.

Limits, privacy and deployment gates

  • English authored topic groups remain finite. Unknown meanings without an explicit bridge or lexical connection still fail. Bridges and graph claims must be supplied.
  • Source reliability and ranker scores are not calibrated truth probabilities. Checksums and certificates are not signatures or verification of real-world facts.
  • Instruction-like-text screening is a limited heuristic. Memory stays untrusted source data; the host must not execute instructions found inside it.
  • Resource bounds can reject large candidate sets, joins or proof-choice spaces. An omitted or incomplete answer is never silently presented as exhaustive.
  • SQLite persistence and deletion behavior are tested, but backups, storage media, encryption and access controls determine real privacy guarantees.
  • The package is locally tested. No official LongMemEval/LoCoMo score, independent external audit, Docker image build, native Windows/macOS run, actual browser rendering or live public deployment has been established.

Provenance, reproducibility and research

The original twenty PHILL-UGR memory profiles and two additional original policies are retained in rankers.ugr; the two 1.1 evidence policies are retained in evidence.ugr. Complete numerical recipes and lineage are in provenance/. Safetensors files mirror the packed parameters for inspection. scripts/reproduce.py reconstructs both banks exactly. No parameter is added or edited in 1.2.

python -m pip install '.[test,hub,server]'
python scripts/build_native.py
python -m pytest -q
python scripts/reproduce.py
python scripts/evaluate_v12.py
python scripts/http_smoke_v12.py

The research notes distinguish this implementation from graph-RAG methods and training-free retrieval that still relies on pretrained embeddings. Relevant references and novelty boundaries are in RESEARCH_1.2.md. The included LongMemEval loader is a retrieval harness, not a completed benchmark.

Documentation map
Guide Purpose
Quick start Local use, glossary, structured queries and API
1.2 architecture Bounds, exact semantics, optimization and certificates
Inherited architecture Original path semantics and bitemporal validity
Migration Compatible database and new statuses
HF publication Verified model and Space upload paths
Research Primary sources and what they do not establish
Report provenance Current evidence versus retained development reports

License and citation

Apache-2.0 for this implementation and authored policies; inherited attribution is retained in NOTICE.md. No third-party pretrained checkpoint is bundled.

@software{holland2026phillnetrecall,
  author = {Phillip A. Holland Jr.},
  title = {PhillNet Recall 1.2.0: Grounded Memory},
  year = {2026},
  version = {1.2.0},
  note = {Scope-local terminology, positive relational queries, and complete-evidence context selection}
}
Downloads last month
-
Safetensors
Model size
9.77k params
Tensor type
I64
·
F32
·
I16
·
I8
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support