File size: 19,305 Bytes
5ccf366 4225068 5ccf366 4225068 5ccf366 4225068 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 | ---
license: apache-2.0
language:
- en
- zh
tags:
- research
- memory
- retrieval
- verification
- llm
---
# Distributed Cognitive Learning Runtime
English | [中文说明(见文末)](#中文说明)
A research runtime that answers a bounded multiple-choice decision with a
**frozen proposal model plus external memory**, and keeps the two apart:
the model may propose, but only memory that passed verification can authorise
an answer, write back, or survive a restart.
This directory is the PR-M1/v0.1.0 candidate package.
## Current status
`PR_M1_IMPLEMENTED_LOCALLY_ACCEPTED_REAL_MODEL_SMOKE`
| Item | State |
|---|---|
| Runtime code, CLI, schemas, examples, tests | implemented; 28 tests pass |
| Isolated install + acceptance (mock provider) | run outside the repo against the built wheel, 15 steps, see `acceptance/PR-M1.md` |
| Real frozen-model call | **run** 2026-11-05, offline on CPU against the pinned local snapshot (`laya@55cf4c4e…`): `answered`, `provider_class=real`, memory reused by a second process. Note: `laya 0.3.20` loads all parameters from the checkpoint; the separately downloaded `ModernBERT-large` weights are not read at inference |
| License / authorisation to upload | runtime code is `Apache-2.0` (`LICENSE`); upstream weights keep their own licence and are not bundled. Destination repo id `WayneRR/cognitive-learning-lab` and publication revision `55cf4c4e…` were approved by the owner on 2026-11-05 |
| Published to any remote | the authoritative publication record is `RELEASE-CHECKLIST.md` and `RELEASE-MANIFEST.json` (`publication.status`); this file deliberately does not restate it |
## The chain each request walks
```text
sanitize input -> integrity check the store -> retrieve memory
-> (optional) acquire cited source receipts -> verify + promote
-> model proposal (never an authorisation) -> rule judgment
-> three-layer boundary -> controlled writeback + replay
```
Layer separation is the point of the package, so an output carries all of them
at once instead of a single verdict: `raw_proposal`, `judgment`,
`verification`, `writeback` + `writeback_receipt`, `authorization`, `cost`,
`model`. `authorization` is `verified_judgment` only when a promoted,
hash-intact memory rule allows the answer.
Two verification types, both deliberately narrow:
- `source-consistency-v1` — a record still matches the source receipt it cites;
- `lineage-consistency-v1` — a written-back conclusion still agrees with the
promoted records it was derived from, and adds no new support.
Neither proves the cited claim is true in the world, and no API returns a
status that suggests otherwise.
## Install
```bash
cd public-runtime
python -m pip install . # runtime, no hard dependencies
python -m pip install ".[dev]" # + pytest, jsonschema for the test suite
python -m pip install ".[model]" # + laya / huggingface_hub / torch for real inference
```
Requires Python 3.10+ (accepted on 3.11.9). `requirements-lock.txt` is the full
44-package closure of the acceptance environment, read from installed
distributions rather than produced by a resolver; it was checked to resolve
satisfiable as a set in a clean venv (`uv pip install --dry-run -r
requirements-lock.txt` → 44 packages, exit 0), which downloads nothing and so is
not a claim that every wheel was re-downloaded. Resolving from `pyproject.toml`
alone drifts upward, so use the lock file as the reproducibility surface.
## Use
```bash
# readiness, without downloading anything
cognitive-runtime doctor --store ./demo.sqlite
# one request through the whole chain
cognitive-runtime infer --input <pkg>/defaults/examples/request.json --store ./demo.sqlite --namespace demo
# a second process reads the memory the first one persisted
cognitive-runtime infer --input <pkg>/defaults/examples/request.json --store ./demo.sqlite --namespace demo
# inspect / maintain the store
cognitive-runtime memory seed --store ./seeded.sqlite --input <pkg>/defaults/examples/seed-records.jsonl
cognitive-runtime memory verify --store ./seeded.sqlite
cognitive-runtime memory inspect --store ./seeded.sqlite
cognitive-runtime memory clear --store ./seeded.sqlite --yes # refuses without --yes
# run against the pinned checkpoint instead of the mock
cognitive-runtime --config <pkg>/defaults/laya-offline.json infer --input <pkg>/defaults/examples/request.json --store ./real.sqlite
```
`<pkg>` is the installed `cognitive_runtime/defaults` directory
(`python -c "import cognitive_runtime.config as c;print(c.DEFAULT_DIR)"`).
Exit codes: `0` = ran, and `answered` or `abstained` are both normal results;
`2` = bad or forbidden input, or a destructive command without confirmation;
`3` = not-run (the provider produced no usable proposal, so no answer was
authorised and nothing about the chain should be read as a pass).
A record the caller hands in as `verified`, `trusted`, `gold` or `expected`
is refused before the gate — see `sanitize.py`. Seeding memory is allowed, but
`memory seed` writes candidates and only `memory verify` against the receipt
registry can promote them.
## Model identity (pinned, not bundled)
- Proposal model: `convaiinnovations/laya` at
`55cf4c4ebb4ebe31b2550e8bdf3bd21b99753851`, `model.safetensors`
842,609,210 B, SHA-256 `891102d3…cbcb8d86c` verified equal to the upstream
LFS digest. License at that revision: `apache-2.0`.
- The snapshot ships `encoder/config.json` only. Measured 2026-11-05:
`laya 0.3.20` builds the network untrained (`pretrained=False`) and loads
every parameter — encoder included — from the Laya checkpoint itself, so
inference does **not** download the `answerdotai/ModernBERT-large` weights
(`45bb4654a4d5aaff24dd11d4781fa46d39bf8c13`, `apache-2.0`). They were
downloaded and hash-verified independently anyway
(`model.safetensors` = `44510fec…`, 1,583,544,840 B) and are recorded in
`SOURCE-INVENTORY.md` §1; the real-model smoke in `acceptance/PR-M1.md` item
2 ran with both hub flags in offline mode.
- The package never bundles weights and never trusts a cache hit blindly:
`verify_integrity()` hashes the pinned file and refuses to run on mismatch.
`MODEL_CARD.md` carries the identity, intended use and limitations.
## What this does not claim
No Transformer parameter growth, no open-domain autonomous learning, no
stable long-term positive gain, no production readiness. The judgment rule set
is a single synthetic "Directory record: X is assigned to Y" template; the
examples are synthetic; the evidence is task- and protocol-bound.
Known limits worth reading before use:
- provenance consistency ≠ external truth;
- a memory hit short-circuits acquisition, so a newer conflicting receipt in a
source file is not consulted until the store is cleared or the record fails
verification;
- retrieval is `entity-token-v1`, deliberately deterministic and dumb;
- if a request re-acquires after its stored row was edited on disk, the row is
quarantined and then rewritten from the receipt — the tampered text never
authorises anything, but recovery is by re-verification, not by refusing the
store forever;
- `cost.monetary_cost` is `null` because it is unknown, not because it is zero.
## Documents
| File | Purpose |
|---|---|
| `PROJECT-PLAN.zh-CN.md` | milestone scope and acceptance checkboxes |
| `ARTIFACT-SPEC.zh-CN.md` | interface, directory and manifest contract |
| `SOURCE-INVENTORY.md` | measured licenses, revisions, hashes, reuse list |
| `MODEL_CARD.md` | identity, intended use, limitations |
| `acceptance/PR-M1.md` | per-item Pass / Fail / NOT_RUN with commands |
| `RELEASE-MANIFEST.json`, `SHA256SUMS` | build identity |
| `PAPER-ARTIFACT-NOTE.md` | relation to the sealed paper experiments |
| `RELEASE-CHECKLIST.md` | what must be true before any upload |
| `TASK-LEDGER.zh-CN.md` | round-by-round execution record |
| `AGENT-HANDOFF.zh-CN.md` | contract for whoever implements the next milestone |
## Three milestone release roadmap / 三阶段发布路线
| Milestone | Target version | Deliverable | Current status |
|---|---|---|---|
| PR-M1 | v0.1.0 | Minimal complete research runtime: pinned model, structured inference, persistent memory, judgment, verification and writeback/replay | implemented; accepted locally with a real frozen-model smoke (offline CPU); publication state is recorded in `RELEASE-CHECKLIST.md` |
| PR-M2 | v0.2.0 | Easier deployment: batch/API access, simple local UI, installation checks and compatibility documentation | NOT_STARTED |
| PR-M3 | v0.3.0 | Experimental conversation and bounded web-learning loop with provenance, cancellation and resource limits | NOT_STARTED |
Each milestone produces one versioned release after its acceptance checks pass.
Later milestones preserve earlier behavior and configuration compatibility.
These are delivery goals, not claims that future capabilities already work.
PR-M3 implements an experimental learning mechanism; it does not establish
reliable open-domain autonomous learning or long-term self-growth.
三个阶段均以记忆和经验沉淀驱动的复合系统为对象,不以模型参数成长为验收条件。
阶段完成后更新同一个模型/运行时仓库;Hugging Face 为拟定主渠道,ModelScope
为可选镜像。平台具体规则、账号和仓库目标在实际发布前核实。无需公开历史实验数据。
## Release gate
The licence is answered (`LICENSE`, Apache-2.0, decided by the owner on
2026-11-05), the build no longer carries the `Private :: Do Not Upload` guard,
the real frozen-model smoke has run (offline, CPU, item 2 of
`acceptance/PR-M1.md`), and the two owner decisions are recorded: destination
repo id `WayneRR/cognitive-learning-lab` and publication revision
`55cf4c4e…` (both approved 2026-11-05). Whether this package is currently a
local candidate or a published release is stated by `RELEASE-CHECKLIST.md`
and `RELEASE-MANIFEST.json` (`publication.status`), which carry the actual
remote URL, uploaded revision and post-download verification — not by this
file.
---
# 中文说明
[English (top)](#distributed-cognitive-learning-runtime)
一个研究型运行时:用一个**冻结的提案模型加外部记忆**回答一个有界多选决策,
并把两者分开——模型只能提出建议;只有通过了校验的记忆才能授权一个答案、
写回、或在重启后继续有效。英文部分与中文部分内容一致;接口与目录契约的
中文权威文本是 `PROJECT-PLAN.zh-CN.md` 与 `ARTIFACT-SPEC.zh-CN.md`。
本目录是 PR-M1/v0.1.0 候选包。
## 当前状态
`PR_M1_IMPLEMENTED_LOCALLY_ACCEPTED_REAL_MODEL_SMOKE`
| 项 | 状态 |
|---|---|
| 运行时代码、CLI、schema、示例、测试 | 已实现;28 项测试全部通过 |
| 隔离安装 + 验收(mock provider) | 在仓库外对构建出的 wheel 执行,15 步,见 `acceptance/PR-M1.md` |
| 真实冻结模型调用 | **已运行** 2026-11-05,离线 CPU、针对固定本机快照(`laya@55cf4c4e…`):`answered`、`provider_class=real`,记忆被第二个进程复用。注:`laya 0.3.20` 从 checkpoint 加载全部参数;单独下载的 `ModernBERT-large` 权重在推理中不被读取 |
| 许可 / 上传授权 | 运行时代码为 `Apache-2.0`(`LICENSE`);上游权重保留各自许可且不被捆绑。上传仍需指定目标账号/仓库名并批准发布 revision |
| 是否已发布到任何远端 | 否 |
## 每个请求经过的链路
```text
输入净化 -> 存储完整性检查 -> 记忆检索
-> (可选)获取引用来源回执 -> 校验 + 晋升
-> 模型提案(永远不构成授权) -> 规则判断
-> 三层边界 -> 受控写回 + 重放
```
分层隔离是本包的核心目的,因此一个输出同时携带所有层而不是单一结论:
`raw_proposal`、`judgment`、`verification`、`writeback` +
`writeback_receipt`、`authorization`、`cost`、`model`。只有当一条已晋升、
哈希完好的记忆规则允许该答案时,`authorization` 才是 `verified_judgment`。
两种校验类型,都刻意保持狭窄:
- `source-consistency-v1` —— 记录仍与它引用的来源回执一致;
- `lineage-consistency-v1` —— 写回的结论仍与它所源自的已晋升记录一致,
且没有新增支持。
两者都不证明被引用的断言在现实世界中为真,也没有任何 API 会返回
暗示相反情况的状态。
## 安装
```bash
cd public-runtime
python -m pip install . # 运行时,无硬依赖
python -m pip install ".[dev]" # + pytest、jsonschema(测试套件)
python -m pip install ".[model]" # + laya / huggingface_hub / torch(真实推理)
```
需要 Python 3.10+(在 3.11.9 上验收)。`requirements-lock.txt` 是验收环境
的完整 44 包闭包,从已安装的发行版读取而非由解析器生成;已确认它在干净
venv 中作为整组可解析(`uv pip install --dry-run -r requirements-lock.txt`
→ 44 包,exit 0),该命令不下载任何东西,因此不构成"每个 wheel 都重新
下载过"的主张。仅从 `pyproject.toml` 解析会向上漂移,可复现性以锁文件为准。
## 使用
```bash
# 就绪检查,不下载任何东西
cognitive-runtime doctor --store ./demo.sqlite
# 一次请求走完整条链
cognitive-runtime infer --input <pkg>/defaults/examples/request.json --store ./demo.sqlite --namespace demo
# 第二个进程读取第一个进程持久化的记忆
cognitive-runtime infer --input <pkg>/defaults/examples/request.json --store ./demo.sqlite --namespace demo
# 检查 / 维护存储
cognitive-runtime memory seed --store ./seeded.sqlite --input <pkg>/defaults/examples/seed-records.jsonl
cognitive-runtime memory verify --store ./seeded.sqlite
cognitive-runtime memory inspect --store ./seeded.sqlite
cognitive-runtime memory clear --store ./seeded.sqlite --yes # 无 --yes 时拒绝执行
# 针对固定 checkpoint 而非 mock 运行
cognitive-runtime --config <pkg>/defaults/laya-offline.json infer --input <pkg>/defaults/examples/request.json --store ./real.sqlite
```
`<pkg>` 是已安装的 `cognitive_runtime/defaults` 目录
(`python -c "import cognitive_runtime.config as c;print(c.DEFAULT_DIR)"`)。
退出码:`0` = 已运行,`answered` 与 `abstained` 都是正常结果;
`2` = 输入非法或被禁止,或破坏性命令未带确认;
`3` = 未运行(provider 没有产出可用提案,因此没有任何答案被授权,
链路的任何环节都不得读作通过)。
调用方以 `verified`、`trusted`、`gold` 或 `expected` 名义递交的记录会在
门禁之前被拒收——见 `sanitize.py`。允许写入种子记忆,但 `memory seed`
只写候选记录,只有对照回执注册表的 `memory verify` 能晋升它们。
## 模型身份(固定 revision,不捆绑权重)
- 提案模型:`convaiinnovations/laya`,revision
`55cf4c4ebb4ebe31b2550e8bdf3bd21b99753851`;`model.safetensors`
842,609,210 B,SHA-256 `891102d3…cbcb8d86c`,已验证与上游 LFS digest
一致。该 revision 的许可:`apache-2.0`。
- 快照只附带 `encoder/config.json`。2026-11-05 实测:`laya 0.3.20`
以未训练状态建网(`pretrained=False`),然后从 Laya checkpoint 本身
加载全部参数——编码器也包括在内——因此推理**不会**下载
`answerdotai/ModernBERT-large` 权重
(`45bb4654a4d5aaff24dd11d4781fa46d39bf8c13`,`apache-2.0`)。该权重
仍被独立下载并核验了哈希(`model.safetensors` = `44510fec…`,
1,583,544,840 B),记录在 `SOURCE-INVENTORY.md` §1;
`acceptance/PR-M1.md` 第 2 项的真实模型 smoke 在两个 hub 开关均为
离线模式的条件下运行。
- 本包从不捆绑权重,也从不盲信缓存命中:`verify_integrity()` 会对固定
文件做哈希校验,不一致即拒绝运行。
`MODEL_CARD.md` 承载身份、预期用途与限制。
## 本包不做的主张
没有 Transformer 参数增长、没有开放域自主学习、没有稳定的长期正增益、
没有生产就绪。判断规则集是一个合成的"Directory record: X is assigned
to Y"单模板;示例是合成的;证据绑定于任务与协议。
使用前值得阅读的已知限制:
- 来源一致性 ≠ 外部真实性;
- 记忆命中会短路获取步骤,因此在存储被清空或该记录校验失败之前,
源文件中更新的冲突回执不会被查看;
- 检索是 `entity-token-v1`,刻意保持确定与"笨";
- 如果存储行在磁盘上被改动后某请求重新获取,该行会被隔离,然后从
回执重写——被篡改的文本永远不会授权任何东西,但恢复方式是重新
校验,而不是永久拒绝整个存储;
- `cost.monetary_cost` 为 `null` 是因为未知,不是因为为零。
## 文档
| 文件 | 用途 |
|---|---|
| `PROJECT-PLAN.zh-CN.md` | 里程碑范围与验收勾选项 |
| `ARTIFACT-SPEC.zh-CN.md` | 接口、目录与 manifest 契约 |
| `SOURCE-INVENTORY.md` | 实测的许可、revision、哈希、复用清单 |
| `MODEL_CARD.md` | 身份、预期用途、限制 |
| `acceptance/PR-M1.md` | 逐项 Pass / Fail / NOT_RUN 及命令 |
| `RELEASE-MANIFEST.json`、`SHA256SUMS` | 构建身份 |
| `PAPER-ARTIFACT-NOTE.md` | 与封存论文实验的关系 |
| `RELEASE-CHECKLIST.md` | 任何上传之前必须为真的事项 |
| `TASK-LEDGER.zh-CN.md` | 逐轮执行记录 |
| `AGENT-HANDOFF.zh-CN.md` | 下一里程碑实现者的契约 |
## 三阶段发布路线
| 里程碑 | 目标版本 | 交付物 | 当前状态 |
|---|---|---|---|
| PR-M1 | v0.1.0 | 最小完整研究运行时:固定模型、结构化推理、持久记忆、判断、校验与写回/重放 | 已实现;本地验收通过并含真实冻结模型 smoke(离线 CPU);未上传 |
| PR-M2 | v0.2.0 | 更易部署:批处理/API 访问、简单本地 UI、安装检查与兼容性文档 | NOT_STARTED |
| PR-M3 | v0.3.0 | 实验性对话与有界网络学习回路,带来源、取消与资源限制 | NOT_STARTED |
每个里程碑在验收检查通过后产出一个带版本的发布。后续里程碑保持早前
行为与配置兼容。这些是交付目标,不是"未来能力已经可用"的主张。
PR-M3 实现的是一个实验性学习机制;它不建立可靠的开放域自主学习或
长期自我成长。
三个阶段均以记忆和经验沉淀驱动的复合系统为对象,不以模型参数成长为
验收条件。阶段完成后更新同一个模型/运行时仓库;Hugging Face 为拟定
主渠道,ModelScope 为可选镜像。平台具体规则、账号和仓库目标在实际
发布前核实。无需公开历史实验数据。
## 发布门槛
许可问题已回答(`LICENSE`,Apache-2.0,owner 于 2026-11-05 决定),
构建不再携带 `Private :: Do Not Upload` 守卫,真实冻结模型 smoke 已经
运行(离线、CPU,`acceptance/PR-M1.md` 第 2 项)。目前阻止上传的纯属
程序事项:尚未指定目标账号与仓库名,revision `55cf4c4e…` 尚未被批准
为发布 revision。在两者都记入 `RELEASE-CHECKLIST.md` 之前,本目录是
一个本地候选——不是一个发布。
|