commit b5c4fbffabd8ac4cb47a4f75ed270400c964c5d0 Author: cogito Date: Sun Aug 2 14:50:15 2026 +0800 chore: initialize Calculet NPU research archive diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8f5bb76 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,14 @@ +archives/** filter=lfs diff=lfs merge=lfs -text +history/**/*.bundle filter=lfs diff=lfs merge=lfs -text +history/**/*.tar filter=lfs diff=lfs merge=lfs -text +history/**/*.tar.gz filter=lfs diff=lfs merge=lfs -text +source/**/*.a filter=lfs diff=lfs merge=lfs -text +source/**/*.bin filter=lfs diff=lfs merge=lfs -text +source/**/*.deb filter=lfs diff=lfs merge=lfs -text +source/**/*.gz filter=lfs diff=lfs merge=lfs -text +source/**/*.ko filter=lfs diff=lfs merge=lfs -text +source/**/*.so filter=lfs diff=lfs merge=lfs -text +source/**/*.tar filter=lfs diff=lfs merge=lfs -text +source/**/*.zst filter=lfs diff=lfs merge=lfs -text +source/**/*.zip filter=lfs diff=lfs merge=lfs -text + diff --git a/README.md b/README.md new file mode 100644 index 0000000..7a6b6c5 --- /dev/null +++ b/README.md @@ -0,0 +1,76 @@ +# Calculet NPU 研究资料归档 + +本仓库是 2026-08-01 至 2026-08-02 从测试样机采集并在本地验收的 Calculet NPU 研究资料入口,供内网团队持续分析 Runtime、驱动、`llama.cpp`、算子优化、多模型调度和新模型适配。 + +状态:八个权威主归档完整,合计 `21,078,519,107` 字节;源码历史、Git bundle、模型文件清单和研究报告均已纳入。原始内容的 SHA-256 不因本仓库的分片方式而改变。 + +## 快速开始 + +仓库使用 Git LFS。首次使用前安装 Git LFS,然后克隆: + +```bash +git lfs install +git clone git@192.168.10.248:cogito/calculet-npu-research-archive.git +cd calculet-npu-research-archive +./scripts/verify-repository.sh +``` + +只想先看报告和源码、不立即下载约 21 GiB 原始归档时: + +```bash +GIT_LFS_SKIP_SMUDGE=1 git clone git@192.168.10.248:cogito/calculet-npu-research-archive.git +``` + +随后可按需执行 `git lfs pull --include='archives/<路径>'`。 + +## 目录 + +| 路径 | 内容 | 用途 | +|---|---|---| +| `reports/` | 30 份研究报告、JSON 和校验工具 | 研究导航、接口契约、调优与实施规格 | +| `documentation/` | Runtime API 与 VPN 原始 PDF | 官方接口和接入资料 | +| `source/` | 去除嵌套 `.git` 后的可浏览源码快照 | 直接检索、代码阅读和修改起点 | +| `history/` | Git bundle、精确仓库 tar、patch、reflog 和主题索引 | 恢复完整提交历史与失败/调优路径 | +| `archives/` | 八个权威主归档;大文件为 512 MiB 可逆分片 | 灾备、重新解包、原始证据保全 | +| `checksums/` | 原始归档、分片、模型和 Git 资产校验值 | 完整性复核 | +| `provenance/` | 原始索引、传输 manifest、日志和完成标记 | 采集与传输审计 | +| `scripts/` | 重组、校验和 bundle 恢复脚本 | 复现与长期维护 | + +## 权威主归档 + +| 归档 | 字节数 | SHA-256 | +|---|---:|---| +| `00-critical-context-20260801.tar.zst` | 8,942,525 | `2ad543697861a386b36604f863acdc161fbfd6552c9cd1e959b1fbe540b524ed` | +| `01-model-runtime-no-weights-20260801.tar.zst` | 11,253,912 | `5414d91cb4bc3c0e64bf29f7e86fc9cef2e2963ff0c5a5ca6488f008053630b8` | +| `llama.cpp-full-no-exclusions-fd9bd632.tar.gz` | 264,921,801 | `55d28eb0b72eb8e22627028965912b3a274b76314f8d726f67427a42ee0b2d25` | +| `baseline-analysis-export-20260801.tar` | 436,398,080 | `ba39aee991c8655324db4326c49a1f32af20ae450a8d07d51f9eac1c60186a4c` | +| `calculet-container-home-v0.4.8-release.tar.gz` | 740,994,223 | `54fe26018983d293c404b2963db7eb90f70bf9d367eefe64ab36003cc9f9530c` | +| `calculet-llama-v0.4.8-release.oci.tar` | 1,646,166,016 | `1ad4aba68c6a96cf7f592fdcd8e0c801bf022845aaf71cd49b909abd60365bf3` | +| `user2-live-home-complete-20260801.tar.zst` | 1,684,911,580 | `581202c7c9fb732baaae3b7c5bd8aa595ac5e4d8a5c155749811cb282ce2afa1` | +| `calculet-models-complete-20260801.tar.zst` | 16,284,930,970 | `ebb143415bc44456599265d07e0b0057497d8708ebafb23f53435d0c189622d8` | + +小于等于 512 MiB 的归档直接位于 `archives/`。更大的归档位于同名 `.parts/` 目录,运行以下命令可重组并核对整包哈希: + +```bash +./scripts/reassemble-archives.sh /path/to/output +``` + +## 恢复 Git 历史 + +`source/` 是便于 Gitea 在线浏览的工作树,不把嵌套仓库的 `.git` 目录直接嵌入本仓库。完整对象、分支、标签、reflog 证据和不可达提交保存在 `history/` 的 bundle 与精确仓库 tar 中。 + +从 bundle 建立独立仓库: + +```bash +./scripts/clone-bundle.sh history/llama.cpp/llama.cpp-all-refs-20260802.bundle /path/to/llama.cpp +``` + +## 完整性与已知例外 + +- 八个主归档在发布前重新核对过 SHA-256 和格式。 +- 七个恢复仓库通过 `git fsck --full --no-reflogs`,五个 bundle 通过 `git bundle verify`。 +- macOS 普通工作树不能精确表达 Linux 大小写碰撞路径及 7 个 overlay whiteout 设备节点;它们在权威 tar 中完整保留。 +- baseline 自带清单对一个 depth500 包含一条过期重复哈希,实际文件匹配其第二条记录;baseline 主归档整包哈希通过。 +- `user2-live-home` 含采集时的 shell 历史、用户配置、测试目录和 rootless Podman 状态。发布前未检出 SSH 私钥、OpenVPN 配置、口令、访问令牌或授权头,但仓库仍应仅在获准的内网团队范围使用。 + +详细验收依据见 `provenance/完整性验收报告.md` 和 `reports/Calculet-NPU-全部数据下载与验收摘要-20260802.md`。 diff --git a/archives/00-critical-context-20260801.tar.zst b/archives/00-critical-context-20260801.tar.zst new file mode 100644 index 0000000..267294d --- /dev/null +++ b/archives/00-critical-context-20260801.tar.zst @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ad543697861a386b36604f863acdc161fbfd6552c9cd1e959b1fbe540b524ed +size 8942525 diff --git a/scripts/clone-bundle.sh b/scripts/clone-bundle.sh new file mode 100755 index 0000000..88b2cae --- /dev/null +++ b/scripts/clone-bundle.sh @@ -0,0 +1,14 @@ +#!/bin/sh +set -eu + +if [ "$#" -ne 2 ]; then + echo "usage: $0 BUNDLE DESTINATION" >&2 + exit 2 +fi + +bundle=$1 +destination=$2 + +git bundle verify "$bundle" +git clone "$bundle" "$destination" + diff --git a/scripts/reassemble-archives.sh b/scripts/reassemble-archives.sh new file mode 100755 index 0000000..39c3765 --- /dev/null +++ b/scripts/reassemble-archives.sh @@ -0,0 +1,25 @@ +#!/bin/sh +set -eu + +repo_root=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd) +output_dir=${1:-"$repo_root/reassembled"} + +mkdir -p "$output_dir" + +find "$repo_root/archives" -mindepth 1 -maxdepth 1 -type d -name '*.parts' -print | sort | +while IFS= read -r parts_dir; do + archive_name=$(basename "$parts_dir" .parts) + destination="$output_dir/$archive_name" + echo "Reassembling $archive_name" + find "$parts_dir" -type f -name 'part-*' -print | sort | xargs cat > "$destination" +done + +for archive in "$repo_root"/archives/*; do + if [ -f "$archive" ]; then + archive_name=$(basename "$archive") + [ -e "$output_dir/$archive_name" ] || ln -s "$archive" "$output_dir/$archive_name" + fi +done + +(cd "$output_dir" && shasum -a 256 -c "$repo_root/checksums/main-archives.sha256") + diff --git a/scripts/verify-repository.sh b/scripts/verify-repository.sh new file mode 100755 index 0000000..493be92 --- /dev/null +++ b/scripts/verify-repository.sh @@ -0,0 +1,21 @@ +#!/bin/sh +set -eu + +repo_root=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd) + +cd "$repo_root" +git lfs fsck +shasum -a 256 -c checksums/published-files.sha256 +shasum -a 256 -c checksums/archive-parts.sha256 +awk ' + NR == FNR { expected[$2] = $1; next } + !($2 in expected) || expected[$2] != $1 { bad = 1 } + { delete expected[$2] } + END { + for (name in expected) bad = 1 + exit bad + } +' checksums/main-archives.sha256 checksums/reassembled-archives.sha256 + +echo "Repository files and LFS objects verified." +echo "Run ./scripts/reassemble-archives.sh /path/to/output for whole-archive verification."