项目事实基线
本文件是本轮唯一新增的事实基线,不是迁移完成或生产验收报告。文件名按用户要求保留 2026-09-12;实际复核发生于 2026-09-13(Asia/Shanghai),UTC 原始记录为 2026-09-12。
项目源码、静态问题、历史部署、本地测试、真实只读 RPC 和未验证闭环分别列示。四份当前状态/导航文档只引用本文件,旧报告保留。
1. 工作区身份与审计边界
- 根目录:
D:/inj/next-injective-git。未切换到其他项目。 - 分支:
dev;HEAD:0ba06f436558f12d97625b393767440cdd0f9862。 - Remote:
https://github.com/Hny0305Lin/next-injective-git.git。 - 入场 Git 状态:4 份文档已修改,15 个文件 untracked;原状态见附录 A。四个 EVM 脚本本来就是 untracked。
- 指定六目录实际文件清单见附录 A;包括现有 out/cache/bin。排除 node_modules、dist、.next、.git 依赖/构建内容;这些文件存在不代表测试通过。
- 未发现适用的 AGENTS.md;已读取任务全文和本项目 Injective EVM skill。
- 无源码/ABI/部署证据编辑,无交易、主网 RPC、签名、私钥读取、commit、push、reset、clean、force push、pin 或 unpin;没有成功删除或移动文件。
- 入场现有文件哈希与文档原文保存在审计内存中;落盘前 585 个受检查原有文件均未变。敏感路径按名称排除,未读取用户密钥/配置。
- 执行命令的环境:Windows amd64;Node v24.11.1,npm 11.6.2,Go go1.26.5 windows/amd64,Git 2.45.1.windows.1,锁定 solc 0.8.24,本地实际 viem 2.55.19。辅助 Windows PowerShell 5.1.26100.7019。
状态定义:PASS = 有本轮可重复证据且该限定检查无阻断;FAIL = 已证实不匹配;BLOCKED = 工具/权限/服务阻断;NOT PROVEN = 缺实证;HISTORICAL = 只描述过去。下文的 PASS 不扩展到未执行的验收层。
2. 九合约源码与本地检查
| 生产合约 | 源码 | initcode bytes | runtime bytes | solc/ABI/尺寸 |
|---|---|---|---|---|
| SuiteDirectory | contracts/evm-v2/src/SuiteDirectory.sol | 4059 | 3745 | PASS |
| BootstrapCoordinator | contracts/evm-v2/src/BootstrapCoordinator.sol | 4968 | 4478 | PASS |
| RepositoryCore | contracts/evm-v2/src/RepositoryCore.sol | 23925 | 23504 | PASS |
| RecoveryModule | contracts/evm-v2/src/RecoveryModule.sol | 9350 | 9006 | PASS |
| ModerationModule | contracts/evm-v2/src/ModerationModule.sol | 16862 | 16383 | PASS |
| EconomicModule | contracts/evm-v2/src/EconomicModule.sol | 10008 | 9476 | PASS |
| UsernameModule | contracts/evm-v2/src/UsernameModule.sol | 8800 | 8417 | PASS |
| BadgeModule | contracts/evm-v2/src/BadgeModule.sol | 6967 | 6653 | PASS |
| ReleaseModule | contracts/evm-v2/src/ReleaseModule.sol | 6589 | 6227 | PASS |
执行 npm run check,时间 2026-09-13 00:55:38 +08:00 至 2026-09-13 00:56:47 +08:00,exit=0,输出 EVM SUITE SOLC CHECK: PASS。脚本只校验现有 ABI/artifacts,未使用 --write-abi/--write-artifacts。九份 CLI 内嵌 ABI 与合约 ABI JSON 语义相同(PASS)。
生产 runtime 均小于 24576 bytes;RepositoryCore 为 23504 bytes,余量 1072。测试合约 SuiteProtocolParityTest runtime=25537 bytes,超过 24576 的警告真实存在;它不是生产合约。本轮未执行 Foundry,不能判断该警告在 Foundry 测试部署中的实际影响。
| 检查 | 状态 | 说明 |
|---|---|---|
| 九个生产源文件、锁定 solc/ABI/artifact | PASS | 本地编译与一致性检查 |
| forge build | BLOCKED | 当前 PATH 无 forge,未执行 |
| forge test -vvv | BLOCKED | 当前 PATH 无 forge,未执行 |
| forge test --gas-report | BLOCKED | 当前 PATH 无 forge,未执行 |
| required invariant/gas 验收 | BLOCKED | 原有 out/cache 和旧报告不能代替本轮输出 |
| 全项目平均覆盖率 91% / 逐合约百分比 | NOT PROVEN | 无对应可复现 coverage 命令+结果;撤销当前指标效力 |
| 九合约完整验收 | NOT PROVEN | 编译/实时哈希不能代替 Foundry、行为、安全和产品 E2E |
3. 测试网 Suite 实时只读状态
- RPC:
https://k8s.testnet.json-rpc.injective.network。先执行 eth_chainId,返回0x59f(1439),才继续其他读取。 - 固定区块:139852506 / 0x855fada;hash:
0x051d5b1577e22dc62d87a528d694cdd2391376f4ed844c154f476082a9f232cd。 - 首次查询时间:2026-09-13 00:57:23 +08:00。每个请求的 UTC 时间、endpoint、区块参数和返回值见附录 D。
- Directory:
0x24124cb60f9ef02f7deb5bc868c028fb412f5334;runtime 3745 bytes,Keccak-2560x48460f1f91897091148cfb4028956db320fcc7eb1f35e158a067cfe50269efcd,与 deployment.json 一致(PASS)。 - state()=1(SuiteDirectory.sol enum Active)、suiteVersion()=3、configuredChainId()=1439(均 PASS)。
- Coordinator:
0x329921023FCf6E337E924686b92f7521549B5970;runtime 4478 bytes,code hash0xbbf6b60d9a90b2f87bfa15bca9733aa5851b2cbae05f1997dd34671b42cf27b7,与 Directory 和 deployment.json 一致(PASS)。 - snapshotRoot():
0x5e2eaab50320b54d85e45bdc9f59ce94ada216d440fac3086fb30da7f98a1cea,与历史证据一致(PASS)。
| 模块 | 实时地址 | 实时 Keccak-256 = Directory moduleCodeHash = 历史 evidence | 状态 |
|---|---|---|---|
| RepositoryCore | 0x20269Fb750D77E7c6c812290E7A7B99E0a3780D4 | 0x1c5e3ca62fa52b1b4ecef6da246b1b4dcfe5d027102165721c42ba3b5e21b467 | PASS |
| RecoveryModule | 0xa7249cE20B54C4Be440838F0eF403d2a6a07E532 | 0x166e917cc005b551e15d840fb9fc92fb012048a715016304c7dd34047984b3c2 | PASS |
| ModerationModule | 0xb957B65634931dD0613abAC296D5a3837BF979Bd | 0x3407b2f48bd761b0c241ba827960c84d95f6a100919f4a9863cf39c73c6e8de3 | PASS |
| EconomicModule | 0x608380F355bf3D7cb0D3DCD58Fc4DBe695dAF3dd | 0x907035110aeb8fa07f3a092ffd91b46b879ef54badcd4115459b79e6b9b0ad0d | PASS |
| UsernameModule | 0xc7C164E46788b37e98D27aCe908C489999c09853 | 0xb7350b5e913d992a522ce2e05c3f3cb37ac50450486880bc36ab0c295292b49e | PASS |
| BadgeModule | 0x5e4EA68e31f89977BF056BE9cb3d4F1c43AB995D | 0x50300d8ae14280acd2f48939d9095f932ac3dc22b481af9e45e07e58f898a77c | PASS |
| ReleaseModule | 0xaa0dD566Eb2b21FeD0Ba9426c0e30887cE2de63f | 0x3834e5dcdf1f26f1c30bd628c4a5117021eb70525e88d725e196f019a43c151c | PASS |
七个 moduleAddress、moduleCodeHash、eth_getCode 均在同一固定区块核对。七模块的 suiteDirectory/bootstrapCoordinator/moduleId 也与 Directory/源码要求一致(PASS)。所有哈希为代码 Keccak-256,不是 SHA-256。
历史 deployment.json 绑定提交 4fd6a07ad2f45eb4b0b09b58eeed1621ddc8f986,当前 HEAD 不同。git merge-base --is-ancestor 返回 0;两个提交间 contracts/evm-v2/src、abi、artifacts 的 git diff --stat 为空。九个源码 SHA-256、creation bytecode SHA-256、runtime template SHA-256 与历史证据相同;把证据的 immutable_values_by_solc_id 代入当前 artifact 的 immutable_references 后,九个重建 runtime 的 Keccak 均等于实时和历史哈希(PASS)。这证明被核对合约字节对应关系,不等于当前整个项目获批。
suite-runtime-verification-2026-08-29.json、suite-verification.json、部署/激活 receipts 和 Blockscout 文档保留为 HISTORICAL。本轮没有重放、重写或补造历史交易,也没有把历史 explorer 记录当作本轮安全验收。
4. CLI 与 Web:分层验证
| 检查 | 状态 | 时间(Asia/Shanghai) | 真实范围 |
|---|---|---|---|
| go test -count=1 ./... | PASS | 2026-09-13 00:58:09 +08:00 | 所有有测试包通过;10个包 no test files,不能算测试覆盖 |
| go vet ./... | PASS | 2026-09-13 00:58:09 +08:00 | 退出0,stdout/stderr为空 |
| npm run typecheck | PASS | 2026-09-13 00:55:38 +08:00 | TypeScript本地检查 |
| npm run test:api | PASS | 2026-09-13 00:55:41 +08:00 | 73 tests / 73 pass / 0 fail / 0 skip;mock fetch/provider及fixture |
| npm run build + 安全输出参数 | PASS | 2026-09-13 00:55:44 +08:00 | tsc -b && vite build;第三方PURE与chunk>500kB warning |
| igit suite verify --json | BLOCKED | 2026-09-13 00:59:02 +08:00 | Windows DACL Access is denied;无完整SuiteInfo |
| evm-demo-inspect 完整模式 | BLOCKED | 2026-09-13 01:01:40 +08:00 | 45秒context预算后在username progress超时;部分返回不是全量PASS |
| evm-demo-inspect -code-addresses | PASS | 2026-09-13 01:04:37 +08:00 | 真实测试网读九个runtime/hash;latest模式,非完整固定区块VerifySuite |
| 真实 EVM 写交易 | NOT PROVEN | 本轮未执行 | 没有使用测试或用户密钥发送交易 |
| 真实 push/fetch E2E | NOT PROVEN | 本轮未执行 | fakeChain/fakeIPFS/fakeAuthorizer不是真实闭环 |
Go 重点目录均已核对:internal/chain 的 RPC/Suite/交易测试使用测试服务器及依赖注入;internal/remote/push_flow_test.go 显式使用 fakeChain/fakeIPFS/fakeAuthorizer;internal/ipfs 的 HTTP 测试为 httptest gateway;internal/replication 的 confirmation/authorization 是 httptest;internal/suitedeploy 的部署/恢复是 fixture;internal/suitemigration 证明离线 plan/manifest/rolling-root/拒绝篡改语义;cmd/igit 和 cmd/git-remote-igit 的入口测试通过。都不能外推为真实链写入、远端 pin 或 clean Git E2E。
普通 CLI 只读命令使用本轮新建的无密钥隔离配置(仅 network/RPC/chain ID/Directory),但 config.Load 的 ProtectDirectory 失败:igit: protect config directory before read: set sensitive-file DACL: Access is denied. Node辅助环境及原生PowerShell均复现;保持 BLOCKED,不关闭 DACL 防护。既有 evm-demo-inspect 使用不存在的隔离配置目录并显式传入 RPC/Directory,绕过配置文件存在分支后可读代码;这是既有读命令的不同范围,不能覆盖 suite verify 的失败。完 整模式初始 block=0x855fc13,但其合约字段调用用 latest,且最后超时。
Web构建命令实际为:
npm run build -- --outDir node_modules/.cache/reconciliation-20260913-0054 --emptyOutDir false
这是用户要求 build 的同一 package script,额外参数保护已有 dist,不执行清空;新产物保留在 ignored 目录。不是默认 dist 被重新验收。
文档声称 Moderation UI 已实现,但对应文件实际不存在。
D:/inj/next-injective-git/web/src/lib/moderationModel.ts:文件不存在。D:/inj/next-injective-git/web/src/lib/moderationTransaction.ts:文件不存在。D:/inj/next-injective-git/web/src/pages/Repo/ModerationTab.tsx:文件不存在。
web/src/pages/Repo/index.tsx:525 仅有 code/commits/refs/sponsors 等 tab,没有 Moderation tab;modules.ts:311 起的业务 API 存在(静态 PASS),不能证明 UI 或真实钱包交互。未创建缺失文件。
公开内置 CLI/Web profile 的 Directory 为空;Web loadConfig() 在本地 origin 会使用 0xf8844F90887731FFd607E1f59e39a3918F6eAb35,并可载入已有 localStorage Suite 设置,因此“所有路径都为空”不成立。该地址不是本轮核对的 Directory,本轮未查询它。
cli/cmd/igit-suite-operator/journal.go:61 保留 TODO: Verify signature。operator 本地测试通过不能外推日志重载验签安全,相关“safe resume完成”声明为 FAIL/NOT PROVEN;本轮未执行迁移。
5. IPFS 与 EVM 事件索引器
四脚本仅静态审 阅和本地 ABI fixture 分析,未执行其主流程;不做 pin/unpin、S3 写入或主网查询。
| 检查项 | 状态 | 源码与实际证据 |
|---|---|---|
| Topic0 | FAIL | event:15 / hot-pin:18 / archive:19 均为0xa7c1...占位值;当前ABI计算应为0x172cc57eb3f906b5e4bcf3a85861062c792de8d5d56754a3785d99057dec948a;reaper本身不使用事件Topic |
| module ID / selector | FAIL | 四脚本均sha256sum;event还先把文本转hex再做SHA-256。正确CORE=0x0f2aa236426cdfb44f309719da4a1e7bf3c2f26dc5d3c28a474082cc7ad909b8;moduleAddress(bytes32)正确selector=0xaa10e9f0,脚本0x40a3d246错误 |
| 当前ABI接入 | FAIL | 未导入contracts/evm-v2/abi或cli/internal/chain/abi;四脚本自己拼selector/word/address,动态结果cut/grep/sed占位 |
| indexed参数 | FAIL | repoId/refName/updatedBy是indexed;data只有commitSha与string[] packUris。indexed string只能得到hash,不能从data恢复refName |
| 动态string[] | FAIL | 本地合成fixture由viem编码/解码两个URI成功;对相同ABI hex应用脚本正则得到[],不是两个CID。fixture不是实际IPFS上传 |
| reaper函数存在性 | FAIL | repositoryCount与repositoryIdAt不在当前ABI;实际有getRef、listRepositoriesPage(address owner,uint256,uint256)、listRefsPage(bytes32,uint256,uint256)。不能把按owner分页误当全局计数 |
| checkpoint | FAIL | event/archive只保存block数字+时间,event另有计数;hot-pin没有checkpoint。无链ID/Directory/ABI版本绑定 |
| blockHash / txHash / logIndex | FAIL | event仅输出transactionHash;不持久化blockHash/logIndex/removed,也无事件身份去重 |
| duplicate / 闭区间 | FAIL | eth_getLogs从checkpoint到next_end均包含端点;下次仍从next_end起,边界重复。无去重;event把JSON事件和count一起捕获进算术processed变量 |
| RPC range limit | FAIL | 声明MAX_BLOCKS_PER_QUERY=10000但闭区间实际可到10001块;未见限流拆段/退避及回归测试 |
| RPC/ABI失败是否推进 | FAIL | hot/archive/reaper以jq .result // empty吞JSON-RPC error,local var=$(...)掩盖失败;archive空logs返回0后推进checkpoint。event用cut占位且|| echo空,非严格decode拒绝 |
| pin/archive失败是否推进 | FAIL | archive:154/158仅echo失败,main:197/198继续保存checkpoint;pinned状态会让归档失败项后续跳过;不能称fail-closed |
| 原子状态写入 | NOT PROVEN | event/archive存在.tmp + mv rename模式;没有跨pin/archive状态一致性、fsync/锁/崩溃注入证据;并非完全没有原子写代码 |
| reorg实现 | FAIL | 未发现block hash恢复验证、确认深度、removed log处理或回退;不能称Block confirmations已实现 |
| reorg/重复/失败回归测试 | NOT PROVEN | scripts、cli、web/test中未找到这四个脚本对应测试;旧V1测试不能当V2证明 |
| unpin safety | FAIL | hot-pin默认ALLOW_UNPIN=false但true可pin rm;reaper:149直接pin rm,没有ALLOW_UNPIN或dry-run gate、宽限期/最终性证明;:13/28强制mainnet。本轮绝不运行这些脚本 |
真实事件声明位于 contracts/evm-v2/src/RepositoryCore.sol:131:
event RefUpdated(bytes32 indexed repoId, string indexed refName, string commitSha, string[] packUris, address indexed updatedBy);
模块 ID 在 src/suite/ISuite.sol:5 使用 Keccak。当前 ABI 用 viem.toEventSelector/toFunctionSelector/keccak256(toHex(text)) 计算结果,不手写 selector 或动态word decoder。合成 fixture 与脚本不符的结果见附录 C;没有修改证据/脚本来让测试通过。
| 真实闭环环节 | 状态 | 范围 |
|---|---|---|
| IPFS client单元测试 | PASS | httptest模拟Kubo add/pin响应 |
| HTTP gateway mock测试 | PASS | httptest+假fetch测试fallback,不是真实gateway |
| 本地Kubo生命周期测试 | BLOCKED | IGIT_RUN_NATIVE_KUBO_INTEGRATION未启用,输出SKIP;无ipfs命令、API连接失败 |
| 当前Kubo运行 | BLOCKED | 未观察到ipfs/kubo进程和5001/8080监听;只探测默认localhost,不推断其他机器 |
| 真实上传/CID产生 | NOT PROVEN | 本轮未上传;fixture字符串不是真实CID产生证据 |
| 真实recursive pin | BLOCKED | /api/v0/pin/ls?type=recursive ECONNREFUSED |
| 远端replication confirmation | NOT PROVEN | 只有mock,未连接真实confirmation服务 |
| EVM update_ref / RefUpdated | NOT PROVEN | 本轮不发送updateRef;未进行事件历史全扫,没有本轮真实业务event样本 |
| indexer checkpoint实证 | FAIL | 代码存在上述明确缺陷;持久状态没有运行实证 |
| 真实gateway fetch | NOT PROVEN | 没有与本次真实pack/CID关联的HTTP下载记录 |
| git object integrity | NOT PROVEN | 没有真实pack下载后的git object验证链 |
| 完整IPFS+EVM+CLI闭环 | NOT PROVEN | 缺真实Kubo、真实测试网写入、真实gateway和Git完整性证据 |
IPFS + EVM + CLI 完整闭环尚未验证。
6. 文档冲突与当前效力
| 文档(项目根目录内) | 原表述 | 实际证据 | 正确状态 | 是否修改 |
|---|---|---|---|---|
| docs/project-status-zh.md | 九合约100%;平均覆盖91%;A04/A11完成;缺测试网地址 | 九源码solc PASS;coverage NOT PROVEN;UI缺失和indexer FAIL;实时Suite已读 | FAIL / NOT PROVEN | 是,新增准确当前区,原文保留为HISTORICAL |
| docs/project-status.md | Foundry通过;operator complete/60.5%;P1.2/1.3 complete | Foundry BLOCKED;journal TODO;旧部署/激活HISTORICAL;本地Go PASS不等于全部安全 | BLOCKED / HISTORICAL / NOT PROVEN | 是,当前入口重定向唯一基线 |
| docs/backlog.md | A04/A11核心实现完成;只需验证;需要Suite地址 | UI文件不存在;脚本代码不匹配;Suite地址已知 | FAIL | 是,R01–R08重新列任务 |
| docs/README.md | A11完成;知识库完整事实;cli/web README链接 | 脚本FAIL;知识库是旧快照;cli/README.md和web/README.md不存在 | FAIL / HISTORICAL | 是,唯一基线入口+历史分类 |
| docs/a11-storage-indexer-v2.md | Implemented;ABI-decoded;fail-closed;checkpoint/reorg;reaper safe/dry-run | placeholder ABI、无reorg、hot-pin无checkpoint、reaper无dry-run/ALLOW_UNPIN;函数不存在 | FAIL | 否,保留原文件;在当前入口标为历史迁移草稿 |
| docs/evm-v2-handoff.md | 已完成部署激活;2026-09-11本机通过;profile为空 | 历史证据与合约模型匹配;本轮工具/ACL和Web本地fallback需补充 | HISTORICAL | 否,保留;本基线覆盖当前状态 |
| docs/liveagent-evm-v2-context.md | P1.1/1.2/1.3历史实现或证据;过去本机测试 | 使用operator/部署/激活编号,与新草稿Moderation/索引器编号冲突 | HISTORICAL | 否,保留;任务改用R编号 |
| docs/project-knowledge-base-zh.md | IPFS上传/gateway/复制已实现;旧部署完成;所有公开配置为空 | 客户端代码存在、本地mock PASS;真实闭环NOT PROVEN;本地loadConfig fallback需限定 | HISTORICAL / NOT PROVEN | 否,保留;不是当前唯一事实来源 |
| MIGRATION-COMPLETE.md | Moderation完整实现;九合约100%;indexer生产就绪(需测试) | 3文件不存在;solc≠验收;错误Topic/hash/ABI和unpin | FAIL / NOT PROVEN | 否,历史迁移草稿/未对齐报告 |
| MIGRATION-REPORT-P1P2.md | P1.1 UI/P1.2索引已实现;CLI/Web后端100% | UI缺失;脚本FAIL;本地测试不证明完整功能/E2E | FAIL / NOT PROVEN | 否,保留历史草稿 |
| A01-BXX-MIGRATION-REPORT.md | 创建3个UI文件、修改Repo集成;后端完整 | 路径/Repo tab不匹配;实际API存在;不能推断完成 | FAIL / NOT PROVEN | 否,保留历史草稿 |
原文声明逐行清单见附录 E,包括事实断言、计划和警告上下文;行号针对本轮入场文本。没有命令/输出/环境/日期或真实范围证据的断言只能为 NOT PROVEN/HISTORICAL,不因为报告自身打勾而变成 PASS。中文91%与英文60.5%均未作为当前coverage保留。
以下文件保留原样并统一标记为:“历史迁移草稿/未对齐报告,不作为当前项目状态依据。”
- 根目录 MIGRATION-COMPLETE.md、MIGRATION-REPORT-P1P2.md、A01-BXX-MIGRATION-REPORT.md,以及其余 MIGRATION-/PRIORITY- 草稿。
- docs/a11-storage-indexer-v2.md、docs/PRIORITY-MAPPING.md。
- docs/evm-v2-handoff.md、docs/liveagent-evm-v2-context.md、docs/project-knowledge-base-zh.md 中的旧状态快照属于 HISTORICAL;架构描述需按当前代码逐条引用。
旧文档中的 P1.1/P1.2/P1.3 分别被用于“operator/部署/激活”和“Moderation/索引/ABI”两套含义,不能互换。后续任务统一采用本轮待办中的 R01–R08。
7. 本轮修改与保留情况
本轮未修改源码,只完成事实审计和文档状态对齐。
| 绝对路径 | 修改内容 |
|---|---|
| D:/inj/next-injective-git/docs/project-status-zh.md | 追加明确当前状态区;旧原文整个区块标为HISTORICAL;不覆盖原未提交文字 |
| D:/inj/next-injective-git/docs/project-status.md | 同一基线的英文入口与核对范围;旧状态原文保留 |
| D:/inj/next-injective-git/docs/backlog.md | R01–R08独立后续任务;旧任务完整保留为历史 |
| D:/inj/next-injective-git/docs/README.md | 唯一基线导航、旧报告失效分类、缺失README及缓存说明 |
| D:/inj/next-injective-git/docs/reconciliation-baseline-2026-09-12.md | 唯一新增事实基线;命令原始输出、实际文件清单、RPC/哈希、逐条声明和阻断 |
所有现有报告、四个untracked脚本、源码、ABI、部署和测试证据均保留。四份已有未提交改动的文档通过“新当前区 + 折叠历史原文”方式修改:原始字节序列连续保存在历史区,并保存入场SHA-256供核对;没有git恢复/回退用户内容。
测试构建在 ignored web/node_modules/.cache/reconciliation-20260913-0054 产生输出;只读 CLI 配置在两个新 ignored 目录 reconciliation-readonly-config-20260913-0100 与 reconciliation-cli-native-20260913-0104,只含公开测试网参数、没有密钥。
辅助进程最初缺少正确 USERPROFILE/SystemDrive,启动失败并生成以下缓存(不计为项目功能文件):
| 本轮新增缓存目录 | 实际文件数 |
|---|---|
| D:/inj/next-injective-git/cli/null | 100 |
| D:/inj/next-injective-git/contracts/evm-v2/%SystemDrive% | 4 |
| D:/inj/next-injective-git/contracts/evm-v2/null | 2 |
| D:/inj/next-injective-git/web/%SystemDrive% | 4 |
| D:/inj/next-injective-git/web/null | 4 |
均未在入场清单中存在;内容为 Go 编译缓存、npm日志及 Windows shell cache,不打印其内容。自动审批策略拒绝清理本轮生成缓存的请求(blocked by policy,无更具体理由)。没有执行成功的删除/移动,未尝试通过另一工具清理。缓存仍为 untracked,应由后续明确范围的整理任务处理。因为本轮额外产生了这些缓存,不能声称工作树只新增一个Markdown文件或已经干净。
8. 阻断问题(按优先级)
- P0 / FAIL:事件Topic、module ID/hash算法、selector、动态ABI、reaper不存在的函数、checkpoint错误推进及unpin路径。阻断索引器使用与真实存储回收;本轮仅记录。
- P1 / BLOCKED:forge缺失;本机Kubo/API不可用;普通igit suite verify的Windows DACL失败;完整inspect公共RPC超时。
- P1 / FAIL:文档指定的Web Moderation UI文件不存在;不能把已有API当作UI验收。
- P1 / NOT PROVEN:真实CLI写入、clean Windows/Linux Git E2E、真实replication/gateway/Git完整性、钱包receipt/finality均缺实证。测试网资金本轮未检查,不能把“资金不足”冒认为已确认原因;写交易未获本轮授权。
- P2 / NOT PROVEN:当前reviewed commit绑定的安全审查、批准、checksum和切换证据;operator journal验签TODO;Web本地profile来源差异;本轮新增缓存未整理。
下列 required evidence 在现有部署证据目录中全部文件不存在,本轮未创建替代品:
D:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/foundry-test.txtD:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/foundry-invariant.txtD:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/foundry-gas.txtD:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/windows-clean-e2e.txtD:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/linux-clean-e2e.txtD:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/web-receipt-e2e.txtD:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/security-review.pdfD:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/finality-runbook.mdD:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/cutover-approval.txtD:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/cutover-evidence.sha256
9. 重新开始时的独立任务清单
| 任务 | 优先级 | 当前状态 | 独立范围与退出条件 |
|---|---|---|---|
| R01 索引 ABI 与链身份修复 | P0 | FAIL | 在后续源码任务中使用当前 ABI 库计算 Topic/module ID/selector,正确处理 indexed refName hash、commitSha 和 string[];消除不存在的 repositoryCount/repositoryIdAt 依赖,明确仓库枚举来源。不得启用现有 reaper。 |
| R02 索引恢复与 unpin 安全 | P0 | FAIL | 验证 block hash + tx hash + log index 去重、闭区间边界、RPC 分段重试、reorg 回退、ABI/pin/archive 失败不推进 checkpoint、原子一致状态;先具备真正的 dry-run,自动 unpin 继续禁止。 |
| R03 Windows CLI 配置读取 | P1 | BLOCKED | 复现并定位 DACL Access is denied;后续授权源码修复后,使用无密钥测试网配置让完整 igit suite verify 在固定区块返回七模块绑定。不要关闭权限保护掩盖问题。 |
| R04 Foundry 验收 | P1 | BLOCKED | 配齐 forge 后运行 build、test -vvv、test --gas-report 及 required invariant gate;保留实际版本、commit、输出,并处理测试合约尺寸问题。 |
| R05 Kubo 与存储实证 | P1 | BLOCKED | 后续明确范围后配置本机 Kubo,真实生成 CID、recursive pin、远端 confirmation、gateway 读取与 Git object 校验;不能沿用 skipped 生命周期测试作为证据。 |
| R06 Moderation UI | P1 | FAIL | 后续单独实现当前缺失的 UI,并检查 Repo 集成;先建立可测的本地交互,再在明确交易授权后收集钱包收据。 |
| R07 测试网产品 E2E | P1 | NOT PROVEN | R01–R06 相关阻断解除后,取得明确写交易范围及测试网资金,在干净 Windows/Linux 跑真实 push/clone/fetch/pull/ref delete,收集完整因果链。资金本轮未检查,不能假定足够或不足。 |
| R08 切换证据与后续功能范围 | P2 | NOT PROVEN | 统一 reviewed commit,补齐安全审查/finality/approval/checksum;清点 Web local profile 差异、operator journal 验签 TODO 和新增缓存。Recovery/Release/Username 等后续 UI 另立有范围的任务。 |
R01–R08 只是后续任务清单,本轮没有实现这些功能或发送交易。静态修复任务可以开始;真实 E2E 需先解决对应环境/代码阻断并获得明确写交易授权;不得进入生产部署。
10. 结论
事实与当前文档效力已对齐到本基线:九合约源码/产物与部署证据分开核对;实时Suite记录已保存;本地/mock与真实只读RPC分开;索引错误和缺失UI明确;旧报告与旧文档原文完整保留且失去当前状态依据效力。文档层的“重新对齐”可以作为下一轮静态修复任务的起点,不表示项目或工作树已经验收完成。
完整功能/E2E验收为 NOT PROVEN。Foundry、Kubo、普通CLI配置读取仍 BLOCKED;索引器和UI声明仍 FAIL。可开始有范围的新源码修复/环境诊断任务;本轮不允许进入真实写交易E2E,未来需先解相应阻断并取得用户明确交易授权;不允许生产部署或公开cutover。清理缓存曾被自动审批拒绝,缓存仍保留且已登记,工作树不干净。
附录 A. 入场工作区原始命令与实际文件清单
git rev-parse --show-toplevel
cwd=D:/inj/next-injective-git; at=2026-09-12T16:53:45.093Z; exit=0
D:/inj/next-injective-git
git status --short --branch
cwd=D:/inj/next-injective-git; at=2026-09-12T16:53:45.089Z; exit=0
## dev...origin/dev
M docs/README.md
M docs/backlog.md
M docs/project-status-zh.md
M docs/project-status.md
?? A01-BXX-MIGRATION-REPORT.md
?? MIGRATION-COMPLETE.md
?? MIGRATION-EXECUTION-SUMMARY-ZH.md
?? MIGRATION-REPORT-P1P2.md
?? PRIORITY-MIGRATION-DONE.md
?? PRIORITY-UPDATE-COMPLETE.md
?? docs/PRIORITY-MAPPING.md
?? docs/a11-storage-indexer-v2.md
?? docs/evm-v2-handoff.md
?? docs/liveagent-evm-v2-context.md
?? docs/project-knowledge-base-zh.md
?? scripts/evm-archive-indexer.sh
?? scripts/evm-event-indexer.sh
?? scripts/evm-hot-pin-indexer.sh
?? scripts/evm-replication-reaper.sh
git branch --show-current
cwd=D:/inj/next-injective-git; at=2026-09-12T16:53:45.096Z; exit=0
dev
git rev-parse HEAD
cwd=D:/inj/next-injective-git; at=2026-09-12T16:53:45.099Z; exit=0
0ba06f436558f12d97625b393767440cdd0f9862
git remote -v
cwd=D:/inj/next-injective-git; at=2026-09-12T16:53:45.102Z; exit=0
origin https://github.com/Hny0305Lin/next-injective-git.git (fetch)
origin https://github.com/Hny0305Lin/next-injective-git.git (push)
powershell.exe -NoProfile -Command Get-Location
cwd=D:/inj/next-injective-git; at=2026-09-12T16:53:45.081Z; exit=0
Path
----
D:\inj\next-injective-git
contracts/evm-v2:入场实际文件 68 项(包含既有 artifacts/out/cache;排除依赖与dist)
D:/inj/next-injective-git/contracts/evm-v2/README.md
D:/inj/next-injective-git/contracts/evm-v2/abi/BadgeModule.json
D:/inj/next-injective-git/contracts/evm-v2/abi/BootstrapCoordinator.json
D:/inj/next-injective-git/contracts/evm-v2/abi/EconomicModule.json
D:/inj/next-injective-git/contracts/evm-v2/abi/ModerationModule.json
D:/inj/next-injective-git/contracts/evm-v2/abi/RecoveryModule.json
D:/inj/next-injective-git/contracts/evm-v2/abi/ReleaseModule.json
D:/inj/next-injective-git/contracts/evm-v2/abi/RepositoryCore.json
D:/inj/next-injective-git/contracts/evm-v2/abi/SuiteDirectory.json
D:/inj/next-injective-git/contracts/evm-v2/abi/UsernameModule.json
D:/inj/next-injective-git/contracts/evm-v2/artifacts/BadgeModule.json
D:/inj/next-injective-git/contracts/evm-v2/artifacts/BootstrapCoordinator.json
D:/inj/next-injective-git/contracts/evm-v2/artifacts/EconomicModule.json
D:/inj/next-injective-git/contracts/evm-v2/artifacts/ModerationModule.json
D:/inj/next-injective-git/contracts/evm-v2/artifacts/RecoveryModule.json
D:/inj/next-injective-git/contracts/evm-v2/artifacts/ReleaseModule.json
D:/inj/next-injective-git/contracts/evm-v2/artifacts/RepositoryCore.json
D:/inj/next-injective-git/contracts/evm-v2/artifacts/SuiteDirectory.json
D:/inj/next-injective-git/contracts/evm-v2/artifacts/UsernameModule.json
D:/inj/next-injective-git/contracts/evm-v2/cache/solidity-files-cache.json
D:/inj/next-injective-git/contracts/evm-v2/cache/test-failures
D:/inj/next-injective-git/contracts/evm-v2/foundry.toml
D:/inj/next-injective-git/contracts/evm-v2/out/BadgeModule.sol/BadgeModule.json
D:/inj/next-injective-git/contracts/evm-v2/out/BootstrapCoordinator.sol/BootstrapCoordinator.json
D:/inj/next-injective-git/contracts/evm-v2/out/EconomicModule.sol/EconomicModule.json
D:/inj/next-injective-git/contracts/evm-v2/out/ISuite.sol/IBootstrapCoordinator.json
D:/inj/next-injective-git/contracts/evm-v2/out/ISuite.sol/IBootstrapModule.json
D:/inj/next-injective-git/contracts/evm-v2/out/ISuite.sol/IEconomicOwnershipHook.json
D:/inj/next-injective-git/contracts/evm-v2/out/ISuite.sol/IModerationPolicy.json
D:/inj/next-injective-git/contracts/evm-v2/out/ISuite.sol/IOwnershipTransferState.json
D:/inj/next-injective-git/contracts/evm-v2/out/ISuite.sol/IRecoveryOwnershipHook.json
D:/inj/next-injective-git/contracts/evm-v2/out/ISuite.sol/IRecoveryState.json
D:/inj/next-injective-git/contracts/evm-v2/out/ISuite.sol/IRepositoryCore.json
D:/inj/next-injective-git/contracts/evm-v2/out/ISuite.sol/ISuiteBound.json
D:/inj/next-injective-git/contracts/evm-v2/out/ISuite.sol/ISuiteDirectory.json
D:/inj/next-injective-git/contracts/evm-v2/out/ISuite.sol/SuiteIds.json
D:/inj/next-injective-git/contracts/evm-v2/out/ModerationModule.sol/ModerationModule.json
D:/inj/next-injective-git/contracts/evm-v2/out/RecoveryModule.sol/RecoveryModule.json
D:/inj/next-injective-git/contracts/evm-v2/out/ReleaseModule.sol/ReleaseModule.json
D:/inj/next-injective-git/contracts/evm-v2/out/RepositoryCore.sol/RepositoryCore.json
D:/inj/next-injective-git/contracts/evm-v2/out/SuiteArchitecture.t.sol/ReentrantSponsorReceiver.json
D:/inj/next-injective-git/contracts/evm-v2/out/SuiteArchitecture.t.sol/RevertingBindingModule.json
D:/inj/next-injective-git/contracts/evm-v2/out/SuiteArchitecture.t.sol/SuiteArchitectureSecurityTest.json
D:/inj/next-injective-git/contracts/evm-v2/out/SuiteArchitecture.t.sol/SuiteArchitectureTest.json
D:/inj/next-injective-git/contracts/evm-v2/out/SuiteArchitecture.t.sol/SuiteArchitectureTestBase.json
D:/inj/next-injective-git/contracts/evm-v2/out/SuiteArchitecture.t.sol/SuiteImportValidationTest.json
D:/inj/next-injective-git/contracts/evm-v2/out/SuiteArchitecture.t.sol/SuiteProtocolParityTest.json
D:/inj/next-injective-git/contracts/evm-v2/out/SuiteArchitecture.t.sol/SuiteVm.json
D:/inj/next-injective-git/contracts/evm-v2/out/SuiteArchitecture.t.sol/WronglyBoundModule.json
D:/inj/next-injective-git/contracts/evm-v2/out/SuiteDirectory.sol/SuiteDirectory.json
D:/inj/next-injective-git/contracts/evm-v2/out/SuiteModule.sol/SuiteModule.json
D:/inj/next-injective-git/contracts/evm-v2/out/UsernameModule.sol/UsernameModule.json
D:/inj/next-injective-git/contracts/evm-v2/out/build-info/9840f531faea4b97.json
D:/inj/next-injective-git/contracts/evm-v2/out/build-info/dc75b0937621de7d.json
D:/inj/next-injective-git/contracts/evm-v2/package-lock.json
D:/inj/next-injective-git/contracts/evm-v2/package.json
D:/inj/next-injective-git/contracts/evm-v2/src/BadgeModule.sol
D:/inj/next-injective-git/contracts/evm-v2/src/BootstrapCoordinator.sol
D:/inj/next-injective-git/contracts/evm-v2/src/EconomicModule.sol
D:/inj/next-injective-git/contracts/evm-v2/src/ModerationModule.sol
D:/inj/next-injective-git/contracts/evm-v2/src/RecoveryModule.sol
D:/inj/next-injective-git/contracts/evm-v2/src/ReleaseModule.sol
D:/inj/next-injective-git/contracts/evm-v2/src/RepositoryCore.sol
D:/inj/next-injective-git/contracts/evm-v2/src/SuiteDirectory.sol
D:/inj/next-injective-git/contracts/evm-v2/src/UsernameModule.sol
D:/inj/next-injective-git/contracts/evm-v2/src/suite/ISuite.sol
D:/inj/next-injective-git/contracts/evm-v2/src/suite/SuiteModule.sol
D:/inj/next-injective-git/contracts/evm-v2/test/SuiteArchitecture.t.sol
cli:入场实际文件 138 项(包含既有 artifacts/out/cache;排除依赖与dist)
D:/inj/next-injective-git/cli/bin/archive-audit/main.go
D:/inj/next-injective-git/cli/bin/evm-activate-suite.exe
D:/inj/next-injective-git/cli/bin/igit
D:/inj/next-injective-git/cli/bootstrap-run.log
D:/inj/next-injective-git/cli/cmd/derive-address-demo/main.go
D:/inj/next-injective-git/cli/cmd/evm-activate-suite/main.go
D:/inj/next-injective-git/cli/cmd/evm-activate-suite/main_test.go
D:/inj/next-injective-git/cli/cmd/evm-demo-bootstrap/main.go
D:/inj/next-injective-git/cli/cmd/evm-demo-deploy-rest/main.go
D:/inj/next-injective-git/cli/cmd/evm-demo-inspect/main.go
D:/inj/next-injective-git/cli/cmd/evm-key-import-demo/import-hex.go
D:/inj/next-injective-git/cli/cmd/evm-key-import-demo/main.go
D:/inj/next-injective-git/cli/cmd/git-remote-igit/main.go
D:/inj/next-injective-git/cli/cmd/git-remote-igit/main_test.go
D:/inj/next-injective-git/cli/cmd/igit-deploy-suite/main.go
D:/inj/next-injective-git/cli/cmd/igit-deploy-suite/main_test.go
D:/inj/next-injective-git/cli/cmd/igit-release-profile-check/main.go
D:/inj/next-injective-git/cli/cmd/igit-replicationd/main.go
D:/inj/next-injective-git/cli/cmd/igit-replicationd/main_test.go
D:/inj/next-injective-git/cli/cmd/igit-suite-migrate/main.go
D:/inj/next-injective-git/cli/cmd/igit-suite-migrate/main_test.go
D:/inj/next-injective-git/cli/cmd/igit-suite-operator/STATUS.md
D:/inj/next-injective-git/cli/cmd/igit-suite-operator/broadcast.go
D:/inj/next-injective-git/cli/cmd/igit-suite-operator/check-balance.exe
D:/inj/next-injective-git/cli/cmd/igit-suite-operator/create-operator-key.exe
D:/inj/next-injective-git/cli/cmd/igit-suite-operator/execute.go
D:/inj/next-injective-git/cli/cmd/igit-suite-operator/igit-suite-operator.exe
D:/inj/next-injective-git/cli/cmd/igit-suite-operator/journal.go
D:/inj/next-injective-git/cli/cmd/igit-suite-operator/journal_test.go
D:/inj/next-injective-git/cli/cmd/igit-suite-operator/keystore.go
D:/inj/next-injective-git/cli/cmd/igit-suite-operator/main.go
D:/inj/next-injective-git/cli/cmd/igit-suite-operator/main_test.go
D:/inj/next-injective-git/cli/cmd/igit-suite-operator/manifest.go
D:/inj/next-injective-git/cli/cmd/igit-suite-operator/manifest_test.go
D:/inj/next-injective-git/cli/cmd/igit-suite-operator/receipt.go
D:/inj/next-injective-git/cli/cmd/igit-suite-operator/recovery.go
D:/inj/next-injective-git/cli/cmd/igit-suite-operator/setup-deploy-config.exe
D:/inj/next-injective-git/cli/cmd/igit-suite-operator/test-manifest.json
D:/inj/next-injective-git/cli/cmd/igit-suite-operator/test-output.log
D:/inj/next-injective-git/cli/cmd/igit/archive.go
D:/inj/next-injective-git/cli/cmd/igit/doctor.go
D:/inj/next-injective-git/cli/cmd/igit/main.go
D:/inj/next-injective-git/cli/cmd/igit/main_test.go
D:/inj/next-injective-git/cli/cmd/igit/setup.go
D:/inj/next-injective-git/cli/cmd/igit/setup_test.go
D:/inj/next-injective-git/cli/cmd/simple-key-import/main.go
D:/inj/next-injective-git/cli/go.mod
D:/inj/next-injective-git/cli/go.sum
D:/inj/next-injective-git/cli/igit-cli.exe
D:/inj/next-injective-git/cli/igit.exe
D:/inj/next-injective-git/cli/internal/archivev1/client.go
D:/inj/next-injective-git/cli/internal/archivev1/inventory.go
D:/inj/next-injective-git/cli/internal/archivev1/inventory_test.go
D:/inj/next-injective-git/cli/internal/archivev1/verify.go
D:/inj/next-injective-git/cli/internal/bootstrap/bootstrap.go
D:/inj/next-injective-git/cli/internal/bootstrap/bootstrap_integration_test.go
D:/inj/next-injective-git/cli/internal/bootstrap/bootstrap_integration_unix_test.go
D:/inj/next-injective-git/cli/internal/bootstrap/bootstrap_test.go
D:/inj/next-injective-git/cli/internal/bootstrap/deps.json
D:/inj/next-injective-git/cli/internal/bootstrap/process_unix.go
D:/inj/next-injective-git/cli/internal/bootstrap/process_windows.go
D:/inj/next-injective-git/cli/internal/bootstrap/process_windows_test.go
D:/inj/next-injective-git/cli/internal/chain/abi/BadgeModule.json
D:/inj/next-injective-git/cli/internal/chain/abi/BootstrapCoordinator.json
D:/inj/next-injective-git/cli/internal/chain/abi/EconomicModule.json
D:/inj/next-injective-git/cli/internal/chain/abi/ModerationModule.json
D:/inj/next-injective-git/cli/internal/chain/abi/RecoveryModule.json
D:/inj/next-injective-git/cli/internal/chain/abi/ReleaseModule.json
D:/inj/next-injective-git/cli/internal/chain/abi/RepositoryCore.json
D:/inj/next-injective-git/cli/internal/chain/abi/SuiteDirectory.json
D:/inj/next-injective-git/cli/internal/chain/abi/UsernameModule.json
D:/inj/next-injective-git/cli/internal/chain/backend.go
D:/inj/next-injective-git/cli/internal/chain/backend_test.go
D:/inj/next-injective-git/cli/internal/chain/evm_address.go
D:/inj/next-injective-git/cli/internal/chain/evm_codec.go
D:/inj/next-injective-git/cli/internal/chain/evm_errors.go
D:/inj/next-injective-git/cli/internal/chain/evm_gas.go
D:/inj/next-injective-git/cli/internal/chain/evm_gas_test.go
D:/inj/next-injective-git/cli/internal/chain/evm_keystore.go
D:/inj/next-injective-git/cli/internal/chain/evm_keystore_test.go
D:/inj/next-injective-git/cli/internal/chain/evm_nonce.go
D:/inj/next-injective-git/cli/internal/chain/evm_nonce_test.go
D:/inj/next-injective-git/cli/internal/chain/evm_rpc.go
D:/inj/next-injective-git/cli/internal/chain/evm_rpc_test.go
D:/inj/next-injective-git/cli/internal/chain/evm_suite_registry.go
D:/inj/next-injective-git/cli/internal/chain/evm_suite_registry_test.go
D:/inj/next-injective-git/cli/internal/chain/evm_suite_values.go
D:/inj/next-injective-git/cli/internal/chain/evm_transactor.go
D:/inj/next-injective-git/cli/internal/chain/evm_transactor_test.go
D:/inj/next-injective-git/cli/internal/chain/evm_types.go
D:/inj/next-injective-git/cli/internal/chain/moderation_values.go
D:/inj/next-injective-git/cli/internal/chain/suite_abi.go
D:/inj/next-injective-git/cli/internal/chain/suite_directory.go
D:/inj/next-injective-git/cli/internal/chain/suite_directory_test.go
D:/inj/next-injective-git/cli/internal/chain/test_helpers_test.go
D:/inj/next-injective-git/cli/internal/chain/types.go
D:/inj/next-injective-git/cli/internal/config/config.go
D:/inj/next-injective-git/cli/internal/config/config_test.go
D:/inj/next-injective-git/cli/internal/environment/environment.go
D:/inj/next-injective-git/cli/internal/environment/environment_test.go
D:/inj/next-injective-git/cli/internal/fileprotection/protection_test.go
D:/inj/next-injective-git/cli/internal/fileprotection/protection_unix.go
D:/inj/next-injective-git/cli/internal/fileprotection/protection_windows.go
D:/inj/next-injective-git/cli/internal/fileprotection/write.go
D:/inj/next-injective-git/cli/internal/gitio/gitio.go
D:/inj/next-injective-git/cli/internal/i18n/i18n.go
D:/inj/next-injective-git/cli/internal/i18n/i18n_test.go
D:/inj/next-injective-git/cli/internal/i18n/locale_unix.go
D:/inj/next-injective-git/cli/internal/i18n/locale_windows.go
D:/inj/next-injective-git/cli/internal/ipfs/client.go
D:/inj/next-injective-git/cli/internal/ipfs/client_test.go
D:/inj/next-injective-git/cli/internal/ipfs/gateway.go
D:/inj/next-injective-git/cli/internal/ipfs/gateway_acceptance_test.go
D:/inj/next-injective-git/cli/internal/ipfs/gateway_test.go
D:/inj/next-injective-git/cli/internal/remote/helper.go
D:/inj/next-injective-git/cli/internal/remote/push_flow_test.go
D:/inj/next-injective-git/cli/internal/remote/url.go
D:/inj/next-injective-git/cli/internal/remote/url_test.go
D:/inj/next-injective-git/cli/internal/replication/client.go
D:/inj/next-injective-git/cli/internal/replication/client_test.go
D:/inj/next-injective-git/cli/internal/secrets/scan.go
D:/inj/next-injective-git/cli/internal/secrets/scan_test.go
D:/inj/next-injective-git/cli/internal/suitedeploy/artifact.go
D:/inj/next-injective-git/cli/internal/suitedeploy/deploy.go
D:/inj/next-injective-git/cli/internal/suitedeploy/deploy_test.go
D:/inj/next-injective-git/cli/internal/suitedeploy/history.go
D:/inj/next-injective-git/cli/internal/suitedeploy/recover.go
D:/inj/next-injective-git/cli/internal/suitedeploy/types.go
D:/inj/next-injective-git/cli/internal/suitedeploy/verify.go
D:/inj/next-injective-git/cli/internal/suitemigration/abi/BootstrapCoordinator.json
D:/inj/next-injective-git/cli/internal/suitemigration/codec.go
D:/inj/next-injective-git/cli/internal/suitemigration/manifest.go
D:/inj/next-injective-git/cli/internal/suitemigration/plan.go
D:/inj/next-injective-git/cli/internal/suitemigration/plan_test.go
D:/inj/next-injective-git/cli/internal/suitemigration/schema.go
D:/inj/next-injective-git/cli/internal/tunnel/process_unix.go
D:/inj/next-injective-git/cli/internal/tunnel/process_windows.go
D:/inj/next-injective-git/cli/internal/tunnel/tunnel.go
web:入场实际文件 99 项(包含既有 artifacts/out/cache;排除依赖与dist)
D:/inj/next-injective-git/web/.env.example
D:/inj/next-injective-git/web/.env.local
D:/inj/next-injective-git/web/.gitignore
D:/inj/next-injective-git/web/.vercel/node/package-manifest.json
D:/inj/next-injective-git/web/.vercel/output/builds.json
D:/inj/next-injective-git/web/.vercel/output/config.json
D:/inj/next-injective-git/web/.vercel/output/diagnostics/cli_traces.json
D:/inj/next-injective-git/web/.vercel/project.json
D:/inj/next-injective-git/web/api/ipfs-health.mjs
D:/inj/next-injective-git/web/api/upload-authorization.mjs
D:/inj/next-injective-git/web/components.json
D:/inj/next-injective-git/web/docs/frontend-improvements.md
D:/inj/next-injective-git/web/e2e/app.spec.ts
D:/inj/next-injective-git/web/e2e/app.spec.ts-snapshots/explorer-page-chromium-linux.png
D:/inj/next-injective-git/web/e2e/app.spec.ts-snapshots/home-page-chromium-linux.png
D:/inj/next-injective-git/web/e2e/app.spec.ts-snapshots/monitor-page-chromium-linux.png
D:/inj/next-injective-git/web/e2e/app.spec.ts-snapshots/settings-page-chromium-linux.png
D:/inj/next-injective-git/web/index.html
D:/inj/next-injective-git/web/package-lock.json
D:/inj/next-injective-git/web/package.json
D:/inj/next-injective-git/web/playwright.config.ts
D:/inj/next-injective-git/web/scripts/release-profile-check.mjs
D:/inj/next-injective-git/web/src/App.tsx
D:/inj/next-injective-git/web/src/components/AccountMenu.tsx
D:/inj/next-injective-git/web/src/components/CodeBlock.tsx
D:/inj/next-injective-git/web/src/components/ContractTypeBadge.tsx
D:/inj/next-injective-git/web/src/components/ErrorBoundary.tsx
D:/inj/next-injective-git/web/src/components/Markdown.tsx
D:/inj/next-injective-git/web/src/components/Toast.tsx
D:/inj/next-injective-git/web/src/components/WalletModal.tsx
D:/inj/next-injective-git/web/src/components/ui/alert.tsx
D:/inj/next-injective-git/web/src/components/ui/badge.tsx
D:/inj/next-injective-git/web/src/components/ui/button.tsx
D:/inj/next-injective-git/web/src/components/ui/card.tsx
D:/inj/next-injective-git/web/src/components/ui/separator.tsx
D:/inj/next-injective-git/web/src/components/ui/skeleton.tsx
D:/inj/next-injective-git/web/src/components/ui/table.tsx
D:/inj/next-injective-git/web/src/components/ui/tabs.tsx
D:/inj/next-injective-git/web/src/components/ui/tooltip.tsx
D:/inj/next-injective-git/web/src/index.css
D:/inj/next-injective-git/web/src/lib/WalletContext.tsx
D:/inj/next-injective-git/web/src/lib/abis.ts
D:/inj/next-injective-git/web/src/lib/activity.ts
D:/inj/next-injective-git/web/src/lib/address.ts
D:/inj/next-injective-git/web/src/lib/architecture-icons.ts
D:/inj/next-injective-git/web/src/lib/block-subscription.ts
D:/inj/next-injective-git/web/src/lib/chain.ts
D:/inj/next-injective-git/web/src/lib/cosmwasm-v1.ts
D:/inj/next-injective-git/web/src/lib/errors.ts
D:/inj/next-injective-git/web/src/lib/gitstore.ts
D:/inj/next-injective-git/web/src/lib/ipfs-probe.ts
D:/inj/next-injective-git/web/src/lib/modules.ts
D:/inj/next-injective-git/web/src/lib/profile.ts
D:/inj/next-injective-git/web/src/lib/registry.ts
D:/inj/next-injective-git/web/src/lib/search.ts
D:/inj/next-injective-git/web/src/lib/transport.ts
D:/inj/next-injective-git/web/src/lib/types.ts
D:/inj/next-injective-git/web/src/lib/utils.ts
D:/inj/next-injective-git/web/src/lib/wallet-icons.ts
D:/inj/next-injective-git/web/src/lib/wallet.ts
D:/inj/next-injective-git/web/src/lib/walletconnect.ts
D:/inj/next-injective-git/web/src/main.tsx
D:/inj/next-injective-git/web/src/pages/Archive.tsx
D:/inj/next-injective-git/web/src/pages/ArchiveOwner.tsx
D:/inj/next-injective-git/web/src/pages/Explorer.tsx
D:/inj/next-injective-git/web/src/pages/Home.tsx
D:/inj/next-injective-git/web/src/pages/IpfsExplorer.tsx
D:/inj/next-injective-git/web/src/pages/Monitor.tsx
D:/inj/next-injective-git/web/src/pages/Monitor/IpfsGatewayCard.tsx
D:/inj/next-injective-git/web/src/pages/Monitor/MetricCard.tsx
D:/inj/next-injective-git/web/src/pages/Monitor/PublicStorageProviderCard.tsx
D:/inj/next-injective-git/web/src/pages/Monitor/SourceCard.tsx
D:/inj/next-injective-git/web/src/pages/Monitor/badges.ts
D:/inj/next-injective-git/web/src/pages/Monitor/utils.ts
D:/inj/next-injective-git/web/src/pages/Owner.tsx
D:/inj/next-injective-git/web/src/pages/Repo/BlobView.tsx
D:/inj/next-injective-git/web/src/pages/Repo/CommitView.tsx
D:/inj/next-injective-git/web/src/pages/Repo/CommitsView.tsx
D:/inj/next-injective-git/web/src/pages/Repo/RefsTab.tsx
D:/inj/next-injective-git/web/src/pages/Repo/SponsorForm.tsx
D:/inj/next-injective-git/web/src/pages/Repo/SponsorsTab.tsx
D:/inj/next-injective-git/web/src/pages/Repo/TreeView.tsx
D:/inj/next-injective-git/web/src/pages/Repo/index.tsx
D:/inj/next-injective-git/web/src/pages/Repo/useRepoViews.ts
D:/inj/next-injective-git/web/src/pages/Settings.tsx
D:/inj/next-injective-git/web/src/styles.css
D:/inj/next-injective-git/web/src/vite-env.d.ts
D:/inj/next-injective-git/web/test/archive-v1.test.mjs
D:/inj/next-injective-git/web/test/evm-suite.test.mjs
D:/inj/next-injective-git/web/test/ipfs-browser-probe.test.mjs
D:/inj/next-injective-git/web/test/ipfs-health.test.mjs
D:/inj/next-injective-git/web/test/monitor.test.mjs
D:/inj/next-injective-git/web/test/release-profile-check.test.mjs
D:/inj/next-injective-git/web/test/search.test.mjs
D:/inj/next-injective-git/web/test/upload-authorization.test.mjs
D:/inj/next-injective-git/web/tsconfig.json
D:/inj/next-injective-git/web/tsconfig.tsbuildinfo
D:/inj/next-injective-git/web/vercel.json
D:/inj/next-injective-git/web/vite.config.ts
scripts:入场实际文件 66 项(包含既有 artifacts/out/cache;排除依赖与dist)
D:/inj/next-injective-git/scripts/archive-indexer-install.sh
D:/inj/next-injective-git/scripts/archive-indexer.sh
D:/inj/next-injective-git/scripts/archive-monitor-install.sh
D:/inj/next-injective-git/scripts/archive-monitor.env.example
D:/inj/next-injective-git/scripts/archive-monitor.sh
D:/inj/next-injective-git/scripts/bootstrap-push.ps1
D:/inj/next-injective-git/scripts/bootstrap-push.sh
D:/inj/next-injective-git/scripts/collect-deployment-metadata.ps1
D:/inj/next-injective-git/scripts/collect-deployment-metadata.sh
D:/inj/next-injective-git/scripts/durable-cid-receiver-install.sh
D:/inj/next-injective-git/scripts/durable-cid-sync-install.sh
D:/inj/next-injective-git/scripts/durable-cid-sync.sh
D:/inj/next-injective-git/scripts/evm-archive-indexer.sh
D:/inj/next-injective-git/scripts/evm-event-indexer.sh
D:/inj/next-injective-git/scripts/evm-hot-pin-indexer.sh
D:/inj/next-injective-git/scripts/evm-replication-reaper.sh
D:/inj/next-injective-git/scripts/evm-suite-solc-check.mjs
D:/inj/next-injective-git/scripts/evm-v2-check-test.sh
D:/inj/next-injective-git/scripts/evm-v2-check.sh
D:/inj/next-injective-git/scripts/evm-v2-foundry-abi-check.mjs
D:/inj/next-injective-git/scripts/evm-v2-solc-check.mjs
D:/inj/next-injective-git/scripts/feegrant-issue-test.sh
D:/inj/next-injective-git/scripts/feegrant-issue.sh
D:/inj/next-injective-git/scripts/feegrant-policy-gate-test.sh
D:/inj/next-injective-git/scripts/feegrant-policy-gate.sh
D:/inj/next-injective-git/scripts/feegrant-record-push-test.sh
D:/inj/next-injective-git/scripts/feegrant-record-push.sh
D:/inj/next-injective-git/scripts/feegrant-revoke.sh
D:/inj/next-injective-git/scripts/filebase-monitor.sh
D:/inj/next-injective-git/scripts/filone.env.example
D:/inj/next-injective-git/scripts/gateway-deploy.sh
D:/inj/next-injective-git/scripts/gateway-fallback-acceptance.sh
D:/inj/next-injective-git/scripts/gateway-ssh-harden.sh
D:/inj/next-injective-git/scripts/gateway-tls.sh
D:/inj/next-injective-git/scripts/gateway-us-deploy.sh
D:/inj/next-injective-git/scripts/hot-pin-indexer-install.sh
D:/inj/next-injective-git/scripts/hot-pin-indexer.sh
D:/inj/next-injective-git/scripts/identity-readiness.mjs
D:/inj/next-injective-git/scripts/migration-cutover-readiness-test.ps1
D:/inj/next-injective-git/scripts/migration-cutover-readiness-test.sh
D:/inj/next-injective-git/scripts/migration-cutover-readiness.ps1
D:/inj/next-injective-git/scripts/migration-cutover-readiness.sh
D:/inj/next-injective-git/scripts/monitor-install.sh
D:/inj/next-injective-git/scripts/pin-indexer-install.sh
D:/inj/next-injective-git/scripts/pin-indexer.sh
D:/inj/next-injective-git/scripts/race-check.sh
D:/inj/next-injective-git/scripts/readiness-file.ps1
D:/inj/next-injective-git/scripts/receive-durable-cids.sh
D:/inj/next-injective-git/scripts/replication-acceptance.sh
D:/inj/next-injective-git/scripts/replication-config-check-test.sh
D:/inj/next-injective-git/scripts/replication-config-check.sh
D:/inj/next-injective-git/scripts/replication-install.sh
D:/inj/next-injective-git/scripts/replication-monitor.sh
D:/inj/next-injective-git/scripts/replication-reaper-test.sh
D:/inj/next-injective-git/scripts/replication-reaper.sh
D:/inj/next-injective-git/scripts/replication.env.example
D:/inj/next-injective-git/scripts/semver-check.mjs
D:/inj/next-injective-git/scripts/semver-check.test.mjs
D:/inj/next-injective-git/scripts/suite-readiness.sh
D:/inj/next-injective-git/scripts/systemd/kubo-us.service
D:/inj/next-injective-git/scripts/testnet-demo-repo.sh
D:/inj/next-injective-git/scripts/testnet-e2e.sh
D:/inj/next-injective-git/scripts/validate-suite-cutover.mjs
D:/inj/next-injective-git/scripts/verify-metamask-tx.sh
D:/inj/next-injective-git/scripts/verify-release-assets.sh
D:/inj/next-injective-git/scripts/windows-suite-clean-check.ps1
docs:入场实际文件 35 项(包含既有 artifacts/out/cache;排除依赖与dist)
D:/inj/next-injective-git/docs/PRIORITY-MAPPING.md
D:/inj/next-injective-git/docs/README.md
D:/inj/next-injective-git/docs/a11-storage-indexer-v2.md
D:/inj/next-injective-git/docs/acceptance-evidence.md
D:/inj/next-injective-git/docs/adr/0001-evm-v2-runtime-and-migration-scope.md
D:/inj/next-injective-git/docs/adr/0002-pluggable-pack-storage.md
D:/inj/next-injective-git/docs/adr/0003-fresh-evm-suite-and-v1-archive-preview.md
D:/inj/next-injective-git/docs/architecture.md
D:/inj/next-injective-git/docs/archived-repositories.md
D:/inj/next-injective-git/docs/backlog.md
D:/inj/next-injective-git/docs/ci-web-publishing.md
D:/inj/next-injective-git/docs/delivery-roadmap.md
D:/inj/next-injective-git/docs/e2e-verification-summary.md
D:/inj/next-injective-git/docs/e2e-visual-verification-report.md
D:/inj/next-injective-git/docs/evm-v2-handoff.md
D:/inj/next-injective-git/docs/evm-v2-migration.md
D:/inj/next-injective-git/docs/evm-v2-repair-plan.md
D:/inj/next-injective-git/docs/evm-v2-repo-identity.md
D:/inj/next-injective-git/docs/evm-wallet-compatibility.md
D:/inj/next-injective-git/docs/feegrant-policy.md
D:/inj/next-injective-git/docs/frontend-improvement-analysis.md
D:/inj/next-injective-git/docs/gogs-frontend-redesign.md
D:/inj/next-injective-git/docs/infrastructure.md
D:/inj/next-injective-git/docs/keplr-acceptance.md
D:/inj/next-injective-git/docs/liveagent-evm-v2-context.md
D:/inj/next-injective-git/docs/monitor.md
D:/inj/next-injective-git/docs/open-questions.md
D:/inj/next-injective-git/docs/p0-evidence.md
D:/inj/next-injective-git/docs/pinning-infrastructure.md
D:/inj/next-injective-git/docs/project-knowledge-base-zh.md
D:/inj/next-injective-git/docs/project-status-zh.md
D:/inj/next-injective-git/docs/project-status.md
D:/inj/next-injective-git/docs/push-setup.md
D:/inj/next-injective-git/docs/release.md
D:/inj/next-injective-git/docs/target-topology-migration.md
evidence:入场实际文件 17 项(包含既有 artifacts/out/cache;排除依赖与dist)
D:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/BATCH-IMPORT-GUIDE.md
D:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/LOCAL-TESTING.md
D:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/MANUAL-VERIFICATION-STEPS.md
D:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/NEXT-GOAL-REMINDER.md
D:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/PROGRESS-SUMMARY.md
D:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/TASK-COMPLETION-CHECKLIST.md
D:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/VERIFICATION-GUIDE.md
D:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/blockscout-verification.json
D:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/contract-addresses.json
D:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/cutover-scope.json
D:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/deployment-recovery-input.json
D:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/deployment-summary.md
D:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/deployment.json
D:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/empty-suite-activation-2026-08-29.log
D:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/empty-username-escrow-attestation.json
D:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/suite-runtime-verification-2026-08-29.json
D:/inj/next-injective-git/evidence/testnet-deployment-2026-08-25/suite-verification.json
文档入场字节哈希(用于证明原未提交内容完整保留):
| 文件 | SHA-256 | 字节数 |
|---|---|---|
| docs/project-status-zh.md | f33c15c1887cdde85c167559d67e5aa21b2950eb26b9287712563c358ad99a8e | 5452 |
| docs/project-status.md | d0a5c36f792ca4a8a1487dcc05d3699e58f14c8ceb042eebb5475998f1f7014a | 22487 |
| docs/backlog.md | bc5ef40a14c0e1945bc22e84895e12a7151c807e9b6293c18fe65ae98d6e7932 | 7859 |
| docs/README.md | 113e33da15b0a74a0f7a7b293189bdb8039b924765100860f808be9847a797bb | 5257 |
附录 B. 本轮命令原始输出
solc:exit 0;2026-09-12T16:55:38.036Z → 2026-09-12T16:56:47.549Z
cwd=D:/inj/next-injective-git/contracts/evm-v2
D:/Software/nodejs/node.exe D:/Software/nodejs/node_modules/npm/bin/npm-cli.js run check
STDOUT:
> igit-evm-v2-contracts@0.0.0 check
> node ../../scripts/evm-suite-solc-check.mjs
Warning: Contract code size is 25537 bytes and exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries.
--> test/SuiteArchitecture.t.sol:557:1:
|
557 | contract SuiteProtocolParityTest is SuiteArchitectureTestBase {
| ^ (Relevant source part starts here and spans across multiple lines).
SuiteDirectory: initcode=4059 runtime=3745
BootstrapCoordinator: initcode=4968 runtime=4478
RepositoryCore: initcode=23925 runtime=23504
RecoveryModule: initcode=9350 runtime=9006
ModerationModule: initcode=16862 runtime=16383
EconomicModule: initcode=10008 runtime=9476
UsernameModule: initcode=8800 runtime=8417
BadgeModule: initcode=6967 runtime=6653
ReleaseModule: initcode=6589 runtime=6227
SuiteArchitectureTest: initcode=22604 runtime=22576
SuiteArchitectureSecurityTest: initcode=13573 runtime=13546
EVM SUITE SOLC CHECK: PASS
STDERR:
npm notice
npm notice New minor version of npm available! 11.6.2 -> 11.19.1
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.19.1
npm notice To update run: npm install -g npm@11.19.1
npm notice
go:exit 0;2026-09-12T16:58:09.361Z → 2026-09-12T16:58:16.572Z
cwd=D:/inj/next-injective-git/cli
C:/Program Files/Go/bin/go.exe test -count=1 ./...
STDOUT:
? github.com/Hny0305Lin/next-injective-git/cli/bin/archive-audit [no test files]
? github.com/Hny0305Lin/next-injective-git/cli/cmd/derive-address-demo [no test files]
ok github.com/Hny0305Lin/next-injective-git/cli/cmd/evm-activate-suite 0.353s
? github.com/Hny0305Lin/next-injective-git/cli/cmd/evm-demo-bootstrap [no test files]
? github.com/Hny0305Lin/next-injective-git/cli/cmd/evm-demo-deploy-rest [no test files]
? github.com/Hny0305Lin/next-injective-git/cli/cmd/evm-demo-inspect [no test files]
? github.com/Hny0305Lin/next-injective-git/cli/cmd/evm-key-import-demo [no test files]
ok github.com/Hny0305Lin/next-injective-git/cli/cmd/git-remote-igit 0.393s
ok github.com/Hny0305Lin/next-injective-git/cli/cmd/igit 1.118s
ok github.com/Hny0305Lin/next-injective-git/cli/cmd/igit-deploy-suite 0.536s
? github.com/Hny0305Lin/next-injective-git/cli/cmd/igit-release-profile-check [no test files]
ok github.com/Hny0305Lin/next-injective-git/cli/cmd/igit-replicationd 0.579s
ok github.com/Hny0305Lin/next-injective-git/cli/cmd/igit-suite-migrate 0.424s
ok github.com/Hny0305Lin/next-injective-git/cli/cmd/igit-suite-operator 0.860s
? github.com/Hny0305Lin/next-injective-git/cli/cmd/simple-key-import [no test files]
ok github.com/Hny0305Lin/next-injective-git/cli/internal/archivev1 0.370s
ok github.com/Hny0305Lin/next-injective-git/cli/internal/bootstrap 1.050s
ok github.com/Hny0305Lin/next-injective-git/cli/internal/chain 5.380s
ok github.com/Hny0305Lin/next-injective-git/cli/internal/config 0.355s
ok github.com/Hny0305Lin/next-injective-git/cli/internal/environment 2.027s
ok github.com/Hny0305Lin/next-injective-git/cli/internal/fileprotection 0.275s
? github.com/Hny0305Lin/next-injective-git/cli/internal/gitio [no test files]
ok github.com/Hny0305Lin/next-injective-git/cli/internal/i18n 0.256s
ok github.com/Hny0305Lin/next-injective-git/cli/internal/ipfs 0.586s
ok github.com/Hny0305Lin/next-injective-git/cli/internal/remote 0.365s
ok github.com/Hny0305Lin/next-injective-git/cli/internal/replication 0.821s
ok github.com/Hny0305Lin/next-injective-git/cli/internal/secrets 0.228s
ok github.com/Hny0305Lin/next-injective-git/cli/internal/suitedeploy 0.758s
ok github.com/Hny0305Lin/next-injective-git/cli/internal/suitemigration 0.315s
? github.com/Hny0305Lin/next-injective-git/cli/internal/tunnel [no test files]
STDERR:
vet:exit 0;2026-09-12T16:58:09.363Z → 2026-09-12T16:58:10.379Z
cwd=D:/inj/next-injective-git/cli
C:/Program Files/Go/bin/go.exe vet ./...
STDOUT:
STDERR:
typecheck:exit 0;2026-09-12T16:55:38.047Z → 2026-09-12T16:55:41.482Z
cwd=D:/inj/next-injective-git/web
D:/Software/nodejs/node.exe D:/Software/nodejs/node_modules/npm/bin/npm-cli.js run typecheck
STDOUT:
> igit-web@0.1.0 typecheck
> tsc -b --pretty false
STDERR:
api:exit 0;2026-09-12T16:55:41.482Z → 2026-09-12T16:55:44.858Z
cwd=D:/inj/next-injective-git/web
D:/Software/nodejs/node.exe D:/Software/nodejs/node_modules/npm/bin/npm-cli.js run test:api
STDOUT:
> igit-web@0.1.0 test:api
> node --import tsx --test test/*.test.mjs
✔ repository breadcrumbs support both EVM and V1 archive route bases (0.7739ms)
✔ V1 smart queries use a frozen latest height and never a write method (1.3374ms)
✔ V1 smart queries retry one transient network failure (207.4204ms)
✔ V1 repository and ref queries map protocol fields and paginate (4.2908ms)
✔ V1 pagination fails closed when a full page does not advance (3.1389ms)
✔ V1 archive rejects oversized LCD responses before parsing (0.3305ms)
✔ V1 queries fail over to the community LCD when the sentry LCD drops requests (814.6497ms)
✔ V1 snapshot height falls back when every primary block query fails (0.4968ms)
✔ V1 queries report every tried LCD when all endpoints are unreachable (1626.0372ms)
✔ built-in profile has one empty SuiteDirectory and ignores legacy stored fields (0.9264ms)
✔ an explicit local SuiteDirectory override round-trips without restoring legacy module fields (0.1691ms)
✔ SuiteDirectory editing is limited to local deployment origins (0.3024ms)
✔ public Settings keeps the Directory copy-only and both write actions disabled (6.0414ms)
✔ wallet chain setup adds Injective testnet when the wallet does not know it (0.3968ms)
✔ native INJ balance does not depend on SuiteDirectory readiness (9.4378ms)
✔ unconfigured Directory fails closed before any network or wallet request (0.6417ms)
✔ Suite verification binds chain, active version, code hashes, and all seven modules at one block (13.9397ms)
✔ Suite verification rejects code hash and binding mismatches (11.6001ms)
✔ activity log reads never exceed the RPC [from, to] block distance cap (4.345ms)
✔ activity stops requesting older spans once the limit is filled (6.6448ms)
✔ activity halves a span when the provider still reports a range cap (6.0938ms)
✔ activity surfaces non-range RPC failures instead of splitting forever (4.0534ms)
✔ registry reads use viem tuple decoding and stable repo IDs (5.7167ms)
✔ wallet writes estimate gas and broadcast an explicit legacy transaction at Injective minimum gasPrice (6.5811ms)
✔ revenue split writes accept the V1 twenty-recipient limit and reject twenty-one (4.4474ms)
✔ metadata writes encode V3 repoId patch flags instead of a locator (4.0186ms)
✔ ownership-transfer rejection uses RepositoryCore cancellation (7.8237ms)
✔ a mined status zero receipt is a failure and never falls back (3.0089ms)
✔ receipt transport failures return a typed uncertain error carrying the tx hash (3.5409ms)
✔ ordinary Web runtime contains no V1 fallback or handwritten ABI selector table (3.6554ms)
✔ wallet connect is independent from Suite verification and keeps failures visible (0.7336ms)
✔ WalletConnect uses a custom URI surface and preserves the EIP-1193 session boundary (0.4492ms)
✔ WalletConnect chain incompatibility remains actionable and does not expose raw logger objects (0.3289ms)