Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions adapters/jiuwenswarm/knowledge-coverage.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
schema_version: 1
required: true
semantic_depth:
per_facet_gt: 0.90
acceptance_mode: lightweight
catalog_sources:
- README_CN.md
- docs/README.md
Expand Down
3 changes: 2 additions & 1 deletion doc/architecture/SPEC/engine/steps/knowledge.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ auto_merge 仓库写 outbox 的 `open_pr` 项,shadow 只记录)。逻辑全
## 2026-09-30 `knowledge.init`(kb init)
参数 `repo`、`stage`、`dry_run`(缺省 true)、`pin`。用自己的 `InitRuntime`(`kb_service/init_support.py`),**不**经
`_runtime`/`_lifecycle`:服务运行时会打开 `kb.db`,且 `_lifecycle` 拒绝未启用的仓库,而为未启用的仓库建库正是 init 的目的。
调 `init_stages.run_stage`;`InitError`/`NotImplementedError` 与状态 `blocked` 的记录都返回 BLOCKED。`state_updates`:
调 `init_stages.run_stage`;`InitError`/`NotImplementedError` 与状态 `blocked`/`partial` 的记录都返回 BLOCKED。`state_updates`:
`kb_init_stage`、`kb_init_status`、`kb_init_pr`。它是本模块里唯一直接写 GitHub 的步骤:经仓库主人的 `gh` 开一个由人合并的
PR,且只在 `ALLOW_PUSH=1` 与 `ALLOW_POST=1` 同时成立、非 dry run、上游非私有时。测试:`test_kb_init_skeleton.py`。

Expand All @@ -32,4 +32,5 @@ PR,且只在 `ALLOW_PUSH=1` 与 `ALLOW_POST=1` 同时成立、非 dry run、

`knowledge-deepen` 另接收 `budget_usd` 与 `retry_unfinished`,逐功能保存七维实现知识、
累计预算与草稿。`from_existing` 允许 knowledge/knowledge-deepen 从已合并 KB 开始。
`unlimited_subscription` 显式传入两角色订阅无限模式;预算和语义完成门槛由同一 stage owner 处理。
`kb widen` / `kb deepen` 经同一 playbook/step 指定这两个知识阶段,旧规则 deepen 保持原契约。
85 changes: 83 additions & 2 deletions doc/architecture/SPEC/kb_service.md
Original file line number Diff line number Diff line change
Expand Up @@ -530,7 +530,7 @@ knowledge-deepen 需要显式 feature/production coverage policy,逐项访问
只保存有证据的内容到最近 owner 的 `feature-depth-<id>.md`,链接功能概览与 owner 索引。
只追加索引链接,保留已有 Direct quick map;最终仍检查地图存在且未被截断。
源码按定义切片,可检索文件前缀之外的实现,并补充可静态解析的第一方被调函数与相关测试。
flow 至少包含两个不同定义的直接调用;Python 校验限定符号、词法 owner 和导入目标,其它
默认 strict 模式的 flow 至少包含两个不同定义的直接调用;Python 校验限定符号、词法 owner 和导入目标,其它
语言检查去除注释/字符串后的声明和调用。动态对象分派不能靠同名猜测,语义仍由模型裁判复核。

每维用 `kb:depth` 绑定 feature、facet、完整 pin 与正文哈希,`kb:depth-proof` 绑定精确证据
Expand All @@ -546,13 +546,94 @@ architecture/guide;同一调用独立判定各新增维度的 faithful/non_con
增加新深度。七维齐全只说明各有代表性实现知识,不声称全行为或执行测试覆盖。
`tools/audit_knowledge_depth.py` 在干净的固定上游 HEAD 上独立重算两组指标。

先遍历全部功能,再修复缺口;恢复与显式重试同样优先处理尚无已接受维度的功能,每项每批最多两次尝试。
先遍历全部功能,再修复缺口;恢复与显式重试同样优先处理尚无已接受维度的功能。
默认有预算模式每项每批最多两次尝试;显式订阅无限模式改为按缺失维度定向修复。
重复维度整项剔除,其它有界候选维度继续独立核验。逐项保存预算预留、生成草稿、裁判
结果与已接受正文;包括第二次尝试在内,中断裁判均可复用完成的生成。恢复固定 KB baseline 与 upstream pin,
输入变化则拒绝串用。`--budget-usd N` 可提高同批累计 ceiling;`--retry-unfinished` 显式
重试缺口并保留花费。已发布批次不再修改,合并后用新 state directory。missing facets
保持明确;订阅生成器 USD 为 unreported,judge 固定记账不等于账单实付。

### 定向深化、认可覆盖与订阅无限模式

`DepthContext.build` 接收 requested facets、previous review 与 evidence round;按入口、
调用方/被调函数、配置 use site、异常分支和具体断言选择完整范围内的有界切片。
生产证据依次优先声明入口、功能实现、直接依赖和调用方,分别保留功能与关联代码预算,
并分配文件预算避免大型通用调用方挤占入口。可证明的小型调用链两端先完整提供;文件数不设四个的上限。
测试索引包含嵌套第一方 SDK/前端套件,优先直接入口引用与实际调用;无关包标记不作为
验证入口。固定前四文件、两个测试及前 180 行不再构成检索上限。动态关联只作为未知。
保存生成前的完整 payload 与规范化 prompt 摘要,中断裁判复用完成的草稿;每个缺口
保留明确原因及按调用事件去重的历史,绑定证据和上下文摘要,恢复不覆盖旧拒绝原因。
同一证据三次未成功修复时保留阻塞原因,不盲重试;显式 retry 可补证继续。
非 Python 调用见证绑定模块级声明、目标完整定义与调用方自己的执行范围;同名方法、
未执行的嵌套函数和回调中的调用不能直接归属外层函数,无法证明的关系保持未知。

proof `basis` 缺省 supported,旧区块不改写。verified_absent 当前只允许完整、可重放
检查证明的验证入口缺失,绑定固定 pin、政策推导范围、版本化检测器及内容摘要;读取、
解析和动态映射不完整均不能发证。正文明确保留测试缺口,不声称执行或通过测试。
已关联到功能、但测试入口或断言因别名等原因未被识别的候选也保持未知;不能仅凭
字面 test/assert 匹配为空签发缺失证明。
两种 basis 都须独立三个维度全 yes。covered_facets/facet_ratio/complete_features 保留
正向语义;recognized_facets/recognized_facet_ratio/recognized_complete_features 另计
认可知识,各维分列 supported/verified_absent/unknown。

可选政策 `semantic_depth: {per_facet_gt: 0.90}` 对每个维度严格执行大于目标,并要求
每个功能至少一个认可区块;79 功能时每维至少 72,553 分母不缩减。target_met 与
批次遍历完成分别记录。提取前复核结构覆盖;结构门槛不足先阻断,不消耗模型调用。
结构覆盖与深度门槛均须满足才能发布。深度未达标 dry run 为 partial,保存预览但步骤不成功;发布阻断。
执行 API 的 feature_ids 只限定调度范围;审计仍包含完整政策中的所有功能和维度。
显式列表保留执行顺序并纳入输入摘要;零深度功能仍优先,之后按列表顺序开展首轮。
并行批次各自保留检查点,合并认可页面后须重新通过全量验收,不能发布分组的部分结果。
独立 source audit 使用相同门槛。原生认可审计读取实际 archived model_call 输入输出,
核对最终区块与源码 pin、三个 yes 和不同模型家族;不能信任只有 receipt 字段的报告。
判定时的编号源码正文须完整覆盖每个区块证明并匹配内容哈希,缺失区块还须绑定相同的
重放证书;显式报告非 Codex 裁判身份则拒绝,未报告身份仍保留未知。

`--unlimited-subscription` 仅用于 knowledge-deepen/deepen,显式要求生成和裁判两角色
分别使用 Zcode GLM-5.3 与独立 Codex 的已认证订阅,拒绝其他模型协议、budget_usd 冲突
及 configured fallback。预算上限 None 表示
该模式,不使用无穷或零价格伪装;累计固定记账和原生调用用量仍记录,实际费用未报告
保持未知。每次调用重新绑定已经检查的订阅传输,不启用 API 付费回退。

### 2026-10-02 轻量认可、13 功能任务与轨迹留存

政策可指定 `semantic_depth.acceptance_mode: lightweight`,CLI 可显式选择
`--acceptance-mode lightweight`;缺省仍为 strict。轻量区块绑定固定源码 pin、真实展示的
源码或项目文档引用、区间及正文哈希,允许代表性流程及明确标注的设计推断,不要求形式化
调用链,也不生成缺失证明。每个功能的一次 Codex 调用同时判定全部新增维度,三个维度
均 yes 才认可。保留旧 strict 区块的原文及哈希,按功能/维度去重统计 strict/lightweight
与 supported/verified_absent/unknown;旧原生记录默认 strict。源码、原生记录、检索和
发布使用相同政策门槛,未知项不计认可,分母不减少。

轻量 validation 必须分类为 automated_runtime、automated_source_text、helper_unit 或
documented_manual;人工步骤须来自已有文档并标明本轮未执行。测试文件名、未找到测试及
源码字面匹配均不能冒充运行断言或核实缺失。检索分别展示已有和实际注入的模式、维度状态
与验证类型,仍受两页和 6,000 字符预算约束。

共享的源码/测试/文档索引绑定 pin、政策、完整生产范围、版本与摘要;只建立一次。
轻量组包保持完整小片段,修正优先补读评审指出的符号和范围。每个缺口至多首轮加三次
自动修正,计数在派发前落盘,恢复或显式 retry 不清零;通过的维度冻结,失败只留在该项。
未派发评审的草稿可在原轮恢复。逐批核对格式、引用、哈希与计数,完整验收集中在交付前。

`eval/knowledge-depth/run_depth_campaign.py` 默认及最大 13 个隔离功能 worker,共享
Zcode 调度文件。默认启动间隔 15 秒、原生 429/account-1302 退避 90 秒,后续间隔可增至
60 秒并逐步恢复;仍保留 13 个任务,供应商限流仅延迟派发,不新增内部重试或重置修正计数。
调度等待、开始、冷却与停止事件与原生输入输出一起脱敏保存于每个 worker 的
`init/traces/attempts/`,最终关联唯一 model_call;未完成调用及未报告账单费用保持未知。
监控读取错误记录诊断、沿用最后安全快照,不停止其它任务。
新增轻量区块的原生审计还须绑定实际 GLM-5.3 草稿的对应维度、正文和已展示引用,以及
Zcode 身份和无 fallback 记录;附近的无关生成调用不能证明该区块的提取归属。

新授权的缺口修复批次可使用 campaign 的 `--repair-guidance`(stage 环境变量
`KB_DEPTH_REPAIR_GUIDANCE`)。定位文件绑定固定 pin、政策和知识基线,按功能/维度保存
准确源码或文档行段及上轮拒绝原因;其摘要进入 campaign 与检查点身份。仅从共享索引读取
真实行段,源码/测试 24 KB、文档 8 KB,重叠合并;超限、范围无效或遗漏维度在派发前报错,
不截断断言或用相邻功能替换。建议正文仍是非可信提示,不是证明,GLM 提取与 Codex 独立评审
均保留;裁判同时核对功能归属。新批次保留前批完整历史,不改写旧轮次,恢复本批也不清零。

交付顺序为:复核结构覆盖 → 定向深化 → 源码与原生认可记录审计 → 检索验收 → 独立审查
→ CI → 合并。完整批次未达到政策门槛时保存真实缺口和检查点,不发布为已完成。

## 2026-09-30 kb init:校准集收割(harvest-calibration)
- 各阶段的 `InitRecord.verdicts[rule_id]` 除 verdict/reasons/model/text_sha/page 外还保存**判定时的规则全文**
(`section`)与钉点证据(`evidence`),被判 fail 剥离或被 owner 删除的规则也能复原成用例;缺这两项的旧记录使收割
Expand Down
13 changes: 13 additions & 0 deletions doc/architecture/SPEC/knowledge_docs.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,21 @@ stdlib 与 `knowledge_service.lifecycle` 的页面/完整深读正文解析;
功能 ID/标题和正文词命中;相同 feature 去重,完整深读优先于基础功能页。
最多返回两页、每页 3,000 字符、总计 6,000 字符;优先完整 facet,超长单 facet 仍提供
截断片段并标 `more_available`。返回来源 pin、命中路径、已有/缺失 facet,不验证 PR head。
`available_facets` 表示页内可用维度,`included_facets` 表示本次正文实际注入的维度;
`not_injected_facets` 是已有但因预算未注入的维度,调用方可用原有有界读取补读。
`facet_basis` 与 `included_facet_basis` 分别对应已有及已注入维度的认可依据。
旧证明默认 `supported`;`verified_absent` 通过确定性缺失证明准入并在 `verified_gaps`
保留缺口标签;没有认可区块的维度仍是 unknown。核验缺失不代表能力已实现、测试已运行
或测试通过,不得把这类背景升级为约束性规则或从覆盖分母删去。
`static-test-association-v2` 的测试清单扫描全部政策支持的第一方代码后缀,
不随功能的源码语言缩小范围;例如 Go 测试可以调用 Python CLI。
尚无完整语法检查器或无法可靠关联的语言保留为 unknown,不能签发缺失证明。
深读正文哈希、证明形状或重复 facet 有问题时不提供该块;上游证据验证仍属于 init/audit。
所有读取前调用同一 `verify`,包括最终被排除的接口卡;激活快照校验失败直接阻断。
是否超过 `semantic_depth.per_facet_gt`、每个功能是否具有认可知识和原生审批绑定,
统一由 init/audit/publication 判定;读取器不重新认证上游、调用模型或宣称全缺口已补齐。
完整候选 checkout 的源码与审批审计、检索验收、独立审查和 CI 应先于授权合并;
自动背景可用不等于实际 PR 质量已经测量。

## 重构备注
**保持它不含模型**:这是 Direct MCP 路径与工具桥共用的**唯一**知识读取器,
Expand Down
5 changes: 5 additions & 0 deletions doc/architecture/SPEC/knowledge_service/lifecycle.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

<!-- verified-against: 2026-10-02 -->

深度验证入口缺失证书的当前检测器为 `static-test-association-v2`;解析、证书工厂和
检索形状校验共用 `DEPTH_ABSENCE_DETECTOR`,算法升级不复用旧检测器身份。

`LOC ~330 · 规则页数据模型与生命周期尾注 · refactor-status: stable`

## 职责
Expand All @@ -14,6 +17,8 @@ reason、evidence、supersedes、superseded_by、protected);无尾注即 act
`DEPTH_FACETS`、`DEPTH_BLOCK` 和 `depth_sections` 是 init/audit 与检索共享的深读数据格式。
后者只返回正文哈希完整、facet 唯一且 proof evidence 形状合法的段落,隐藏 proof 注释,
不重新读取上游证据。固定源码验证仍由 `kb_service.knowledge_depth` 负责。
proof 的 basis 缺省 supported;verified_absent 要有形状完整的版本化 certificate,
返回结果显式携带 basis 与缺失范围。形状校验不能替代 source audit 的完整重放。
`Page.parse/render`、`Page.rules/rule/replace_section/append_section`、
`Page.sources/with_sources`(按页面原风格写 flow 或 block 列表)、`Section.footer/
with_footer/body_without_footer/content_sha256/citations`、`Footer.parse/render/check`、
Expand Down
2 changes: 2 additions & 0 deletions doc/architecture/SPEC/playbooks/PLAYBOOKS.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,5 @@ pr-history → harvest-calibration),每阶段一个由人合并的 PR。只
每个非空知识升级一个 commit,汇成一个 draft PR,完整 Codex 审阅通过后才 ready。
`knowledge` 可传 `from_existing` 从已合并索引与路由增补(保留已有阶段记录的门禁),
可显式传 `subscription_generator` 使用声明订阅计费的生成器;未报告的订阅费用不伪造为 USD。
独立 knowledge-deepen 可传 `unlimited_subscription`,同时检查生成与裁判订阅;不兼容
budget_usd,固定记账仍可观察。启用语义政策时 partial 预览不能当作阶段成功。
9 changes: 7 additions & 2 deletions doc/architecture/SPEC/providers/codex.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# providers/codex.py —— 规范

<!-- verified-against: 2026-09-30 -->
<!-- verified-against: 2026-10-02 -->

`LOC ~197 · harness transport(ChatGPT 订阅) · refactor-status: ok`

Expand All @@ -12,7 +12,12 @@
沙箱作为容纳控制。

## 公开契约
`CodexTransport`(`auth_gap`、`run_session`、`complete`)、`spec = PROVIDERS["codex"]`。
`CodexTransport`(`auth_gap`、`subscription_billing`、`run_session`、`complete`)、`spec = PROVIDERS["codex"]`。
subscription_billing 只认可当前 CLI 明确报告 ChatGPT 登录、默认 openai provider 且无
活动 profile 或 provider/base-url 覆盖的环境。API-key 登录、配置或检查失败均不能用于订阅无限模式;
布尔状态不代表已测得零费用。
配置读取、登录探测和实际执行使用同一 `sanitized_env()` 与有效 HOME;被过滤的
`CODEX_HOME` 不得使检查与执行落在不同认证目录。

## 不变量(**C1**、**C2**)
- **控制手段是沙箱,不是工具列表。** Codex 无法关闭自己的原生 shell,所以容纳靠 OS 级的
Expand Down
9 changes: 7 additions & 2 deletions doc/architecture/SPEC/trace_store.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# trace_store.py —— 规范

<!-- verified-against: 2026-09-28 -->
<!-- verified-against: 2026-10-02 -->

`LOC ~260 · trace/1:Copilot 与 RB 共用的模型调用/判定/结果记录 · refactor-status: stable`

Expand All @@ -13,6 +13,11 @@
`usage`、`seconds`、`inputs`/`outputs`(只存 blob 引用,从不内联正文)、`result`、`error`、`env`
(copilot 版本与 SHA)。`outcome` 是事后金标(merged、closed_unmerged、head_changed、rule_retired)。
- `trace_context(**fields)`:用 contextvars 绑定上下文,嵌套叠加,线程/协程安全。
- `begin_call(entry)`:在模型派发前保存输入 blob 及独立的
`attempts/<UUID>/attempt.json`。`NativeCallArchive.event` 逐条脱敏、追加并 fsync
`native-events.jsonl`,保留原生会话、输出、错误与调度等待事件。结束时绑定唯一的
`model_call` 回执及输出、用量、耗时与状态;journal 不是另一笔调用,不能重复计费。
中断未完成的 journal 保留输入和已收到的事件,未报告用量及费用保持未知。

## 不变量
- 写入前统一脱敏:已知令牌形态(GitHub、Anthropic、OpenAI、AWS、Slack、Bearer、私钥块)以及名字表明是
Expand All @@ -21,4 +26,4 @@

## 测试
`test_trace_store.py`(schema 与去重 blob、索引与重建、脱敏、网关记录成功与失败调用、回放、导出的判定/结果
关联与校准集泄漏过滤、SDK 导出、知识服务的 decision/outcome 记录)。
关联与校准集泄漏过滤、SDK 导出、知识服务的 decision/outcome 记录、派发前输入留档、原生事件及中断保留)。
Loading
Loading