Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
b882577
docs(#206 伞): GLOSSARY 铸词 发现轮/发现管线(ADR 0010 立法面;span 级回引+uncertainty …
steponeerror Oct 26, 2026
174aa19
chore(#207): T1 发现轮管线骨架+旋钮族+台账 开工占位(集成分支 feature/discover-pipeline-v0…
steponeerror Oct 26, 2026
46ea92c
chore(#209 T3): 占位 commit — 发现轮候选面+工具宿主批开工(集成分支 b8825774 基)
steponeerror Oct 26, 2026
0a81018
feat(#209 T3-①②④): 结构化候选面 — candidate 手写校验器+证据存在性过滤(缺=丢+留痕)+PROPOSE 候…
steponeerror Oct 26, 2026
5169dc3
T3(#209): 发现轮 web 三工具宿主(microprobes 同形制)+配额一等公民通道计数
steponeerror Oct 26, 2026
0cc76b1
docs(#209 T3): DP-T3-REPORT 交卷 — 五交付物+红证+验收门+T1 接线协议
steponeerror Oct 26, 2026
4166231
feat(#207): OPS_DISCOVER_* 旋钮族单源+月帽共享(30/3600/¥5;月帽=OPS_PIPELINE_MONT…
steponeerror Oct 26, 2026
615a648
feat(#207): 发现轮步/门/faux 面——SCAN(注册表+NEEDS 两面候选宇宙)/SHORTLIST(解析失败=降级空清…
steponeerror Oct 26, 2026
f52669f
feat(#207): DISCOVER_PIPELINE 六步表+引擎 per-type 化(轮型推断=round-id 后缀;byNa…
steponeerror Oct 26, 2026
1a9f102
docs(#207): DP-T1-REPORT 交卷(门数字+commit 链+红测记载+T2/T3 接线协议)+golden 门数 p…
steponeerror Oct 26, 2026
8feef6f
docs(#207): 报告 commit 链哈希更正(1a9f102d 实值)
steponeerror Oct 26, 2026
bfe9bc6
merge(#207): T1 发现轮管线骨架——六步+OPS_DISCOVER_* 旋钮族+月帽共享+ENQUEUE 只写+四门 T1-…
steponeerror Oct 26, 2026
f4ef9a0
merge(#209): T3 并入集成分支基线(试合)——selftest 尾区并集解(T1 块+T3 块全保活),96/0
steponeerror Oct 26, 2026
4b1c872
merge(#209): T3 结构化候选面+发现轮工具宿主+配额一等公民——candidate 七键校验器/证据存在性(宁少算)/mkD…
steponeerror Oct 26, 2026
01b3c6b
chore(#210 T4): 占位 commit — 典章+北星+CHANGELOG 批开工(集成分支 4b1c8720 基)
steponeerror Oct 26, 2026
0e34a57
feat(#210 T4): ENQUEUE 步 action 词统一 PROPOSE——CANDIDATE_ACTION 单源导入(di…
steponeerror Oct 26, 2026
afff725
T2 #208 占位:发现轮四门强化+span 级逐字回引+哨(开工;spec /tmp/discover-pipeline-spec.m…
steponeerror Oct 26, 2026
2d71cc1
feat(#210 T4): 北星发现轨两腿——①入队→落地转化率(queue.md PROPOSE 去重行 vs 注册表源名逐字匹配,宁…
steponeerror Oct 26, 2026
7f55c7f
feat(#210 T4): STANDARD.md D-7 发现与运营同律(ADR 0010 出处;六步四门+模型零裁决+ENQUEUE…
steponeerror Oct 26, 2026
dd012d7
docs(#210 T4): DESIGN.md §6 三处发现通道措辞翻正——预算四界(OPS_DISCOVER_* 旋钮族 30/36…
steponeerror Oct 26, 2026
17ae289
docs(#210 T4): CHANGELOG Unreleased 增发现管线化批双语伞条(#206-#210,T1 骨架+旋钮族/T…
steponeerror Oct 26, 2026
273206c
docs(#210 T4): DP-T4-REPORT.md 交卷(五件交付+自决四条+门数字全绿:selftest-pipeline 9…
steponeerror Oct 26, 2026
ae96a29
wip(#208): 续作存量入库——citation.mjs(ptrForm 三形/spanMatcher/scanEvidenceFa…
steponeerror Oct 26, 2026
3d1ab1f
feat(#208): golden 扩发现轮用例 pipeline_discover_full_faux(真跑 10/0)——run-g…
steponeerror Oct 26, 2026
b042de5
docs(#208): shortlist prompt span 律名面落字(幽灵/半真/改写三门败);faux 面不读 prompt …
steponeerror Oct 26, 2026
43e2909
docs(#208): DP-T2-REPORT.md 交卷(自决六条+门数字全绿+commit 链+T1/T3 接线对拍+回放注意)
steponeerror Oct 26, 2026
d8c98a7
merge(#208): T2 四门强化+span 级回引——spanMatcher 逐字律+URL 边界律(幽灵/半真/改写三负例)/G…
steponeerror Oct 26, 2026
9b9a8a1
merge(#210 T4 试合): T2(d8c98a7a)并入 feature/dp-t4 基线——冲突面 steps.mjs/sel…
steponeerror Oct 26, 2026
fb07522
docs(#210 T4 移交件①): STANDARD.md D-7 补挂 citation.mjs#spanMatcher 挂点(挂点…
steponeerror Oct 26, 2026
32ee731
docs(#210 T4 移交件②): CHANGELOG 伞条终数更新(合流终数,merger 亲跑)——selftest-pipeli…
steponeerror Oct 26, 2026
8611e82
merge(#210): T4 典章+北星+PROPOSE 统一——STANDARD D-7 发现与运营同律(挂点 31→40,含 spa…
steponeerror Oct 26, 2026
620720b
chore(#217): T3.5 占位 commit——发现轮工具面真接线(SHORTLIST 注入/MEASURE host.call…
steponeerror Oct 26, 2026
6e306c1
feat(#217 T3.5 D1): readDiscoverKnobs 追 dupCallLimit 键(OPS_PIPELINE_D…
steponeerror Oct 26, 2026
6683c2f
feat(#217): T3.5 三点接线——SHORTLIST 工具直装/MEASURE host.call 真证据面/CLOSE di…
steponeerror Oct 26, 2026
87bc10c
fix(#217): queue.md 表头句翻正三写口——「queue_action 唯一写口」不再真(ENQUEUE 候选行+appe…
steponeerror Oct 26, 2026
0b0804b
wip(#217 续作入库防丢): golden pipeline_discover_full_faux 扩端到端正例(d3 measur…
steponeerror Oct 26, 2026
a44ca33
docs(#217): CHANGELOG 双语条(工具面真接线三接缝+端到端正例+表头三写口+门数字)+DP-T35-REPORT.md…
steponeerror Oct 26, 2026
1167fb4
merge(#217): T3.5 发现轮工具面真接线——SHORTLIST host.tools 直装(faux runRealStep…
steponeerror Oct 26, 2026
babacff
docs(#206 伞收口): GLOSSARY「URL 幻觉」→「幽灵 URL」一词一拼对齐代码/prompt 面(Standards …
steponeerror Oct 26, 2026
541a135
merge: origin/master(scanner_ranges 批 PR #216)入发现管线集成分支——两批 GLOSSARY …
steponeerror Oct 26, 2026
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
4 changes: 4 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

84 changes: 84 additions & 0 deletions DP-T1-REPORT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# DP-T1-REPORT — 发现轮管线骨架+旋钮族+台账(#207 T1)

工位:worktree `.worktrees/dp-t1`(分支 `feature/dp-t1`,基=集成分支 `feature/discover-pipeline-v0` @ b8825774)。
spec:/tmp/discover-pipeline-spec.md T1 节(权威);ADR 0010;票 #207(伞 #206)。
状态:**全部 T1 交付物落地,验收门全绿;禁 push 已遵守(未 push)。**

## 交付物清单(spec T1 节逐条)

1. **DISCOVER_PIPELINE 六步表**(`ops/agent/pipeline.mjs`):SCAN→SHORTLIST→MEASURE→ENQUEUE→RETRO→CLOSE(+FAILED 终态书挡),数据驱动同 HEALTH_PIPELINE 形制。`PIPELINES={health,discover}` 单源;byName/runnable/STAGE_PREFIX 一律 per-type 派生(`byNameOf`/`runnableOf`/`STAGE_PREFIXES`)。
- SCAN(script,零模型零网络):候选宇宙快照 `d1-scan.json`=**源注册表面**(backend/ipdb/_sources/*.py 非_前缀,evidence_ptr=repo 相对路径)+**NEEDS.md 缺口行面**(状态∈{open,候选},evidence_ptr=`NEEDS.md:L<n>`)+web 面占位(`channels.web.status="placeholder"`,T3 接线)。
- SHORTLIST(model `discover/shortlist`,fail retry1/terminal model_face):结构化候选解析,**失败=降级空清单留痕不炸轮**(`d2-shortlist.json={candidates:[],degraded:"shortlist_parse:…"}`,步仍 done,零候选合法,同 TRIAGE 零假设判例)。
- MEASURE(script):T1=本地确定性存在性面(候选 evidence_ptr ∈ d1-scan 指针集 → evidence_local_ok);未测/超时=`status:"uncertainty"` hold 行留痕(T3 接探针后消除)。工件 `d3-measure.json`。
- ENQUEUE(script):**只写不动作**——经 `ops/agent/tools/queue-lock.mjs appendQueueRowLocked`(#139 flock 真路径,node/python 同锁同址)写 `ops/queue.md`;入队三判据=证据存在性全过+排他率预估≥`ENQUEUE_EXCLUSIVITY_GATE`(0.25,常量)+阳性对照可执行,**判据在代码不在 prompt(模型无权改,ADR 0010)**;不过=skipped 留痕;queue 写败=fail-closed infra。工件 `d4-enqueue.json`。
- RETRO/CLOSE:同 health 律(台账幂等/sandbox 红线/09-budget.json 同形快照)。
2. **round-id 形制**:`^\d{4}-\d{2}-\d{2}-\d{4}-discover(-r\d+)?$`——mkCtx 正则 per-type 构造(后缀集=轮型集);`typeOfRoundId(id)` 后缀推断(显式 type 优先,不符即拦);resume/replay 正则同步双后缀;replay 前缀复制 discover=d1-d4。**selftest 既有 faux 面同构新增**(见红测/绿测节)。
3. **旋钮族**(`ops/agent/pipeline/budget.mjs`):`readDiscoverKnobs`={OPS_DISCOVER_MAX_MODEL_CALLS=30, OPS_DISCOVER_WALL_CLOCK_S=3600, OPS_DISCOVER_SPEND_CAP_CNY=5, **monthlyCapCny=OPS_PIPELINE_MONTHLY_CAP_CNY(共享同键同缺省 ¥30)**};mkCtx 入口校验(非法=usage 错);**月帽共享=admitOrRefuse 同一函数**(runPipeline 传 `round:ctx.type`,只影响留痕轮次列,裁决真源 admitMonthly 不变);dup 哈希沿用(canonicalJson/dupKey/dupRecord 原样)。引擎四界 per-type:发现轮报错文案指认 OPS_DISCOVER_*;**token 界=发现轮跳过**(tokenBudget undefined 判)。
4. **artifacts.mjs 名表扩容**:DISCOVER_SCAN/DISCOVER_SHORTLIST/DISCOVER_MEASURE/DISCOVER_ENQUEUE 四名入 ARTIFACTS(总 22);新增派生导出 `HEALTH_ARTIFACT_NAMES`(原 18)与 `discoverArtifactNames()`(7:四名+09-budget/gates/state);d2 transcript 由步面管不入名表(任务明令四名;发现轮闭包断言=固定面∪transcript 字面)。闭包哨三层自动覆盖。
5. **台账标签**:`LEDGER_TAGS={health:"pipeline",discover:"pipeline-discover"}` 单源(steps.mjs 导出,steps 写面+gates 读回检查同源消费)。
6. **接线点占位(T3 填)**:SHORTLIST 真面经 runModelStep 通用机零工具注入;MEASURE 本地面;web 渠道 placeholder;prompt `prompts/discover/shortlist.md`(输出契约/span 逐字回引 T2 强化/回声防线/模型无权改判据);canned fixture `fixtures/pipeline/shortlist.json`(两真候选:L14 rDNS parquet+L17 carrier,queue 零入队=排他率未测故 skip,设计使然)+faux.mjs STEP_ROUND/transcriptName SHORTLIST 接线+README 行。
7. **CLI**:`node ops/agent/pipeline.mjs discover [--round-id ID] [--fixtures DIR]`(main usage/emitInfra 轮名 per-type)。

## 验收门数字

| 门 | 数字 | 基线 | 判 |
|---|---|---|---|
| selftest-pipeline | **PASS=89 FAIL=0** | 81/0 不降 | ✅(81 基线全绿+8 新例) |
| selftest-t4 | **63/0** | 63/0 | ✅ |
| selftest-contract | **18/0** | 18/0 | ✅(OPS_DISCOVER_* 三名入 SPAWN_CONTRACT_ENV+测试名集) |
| golden | **9/0** | 9/0 | ✅(health 罐装位等价;run-golden.mjs 门数改 HEALTH_PIPELINE 派生单源) |
| standard-check | **OK=47 FAIL=0(挂点 31)** | 47 | ✅ |
| pytest ops 子集(backend venv) | **276 passed, 1 skipped** | — | ✅(82.9s) |
| health 轮罐装面位等价 | golden 9/0+基线 81 全绿+pytest 全绿 | 零变 | ✅:health 可见面零变(门序 10 门/门记录/台账行/env 7 键/报错文案同字符串),仅内部派生单源化 |

## commit 链(worktree,未 push)

1. `174aa199` chore(#207) 开工占位(空)
2. `41662317` 旋钮族单源+月帽共享+SPAWN_CONTRACT_ENV 三名
3. `615a648c` 步/门/faux 面+四门+canned fixture+prompt+台账标签
4. `f52669fc` DISCOVER_PIPELINE 六步表+引擎 per-type 化+selftest 8 新例+健康轮断言 per-type 化
5. `1a9f102d` golden 门数 per-type 派生+本报告

## 红测真红记载(实现前捕获,PASS=81 FAIL=8)

| 例 | 红证(逐字) | 注 |
|---|---|---|
| ①旋钮族(含负值拒) | `TypeError: readDiscoverKnobs is not a function` | 结构红:负值/非数字拒行为由 readKnob 单源既有合同测试钉死(#199 判例);绿面新增断言(负值/非数字/env 覆盖/缺省/月帽共享同值)全绿 |
| ②台账标签 | 断言败:留痕行轮次列=discover(实际落成 health) | appendRefusalTrace 硬编码 round="health" 时期 |
| ③月帽共享拒 discover | wiring 红:`round_id 形状须 YYYY-MM-DD-HHMM-health:…-discover`(mkCtx bad_round 先于 admission 面) | 接线后真行为绿:¥30 植入→拒 budget_monthly+留痕 round=discover+轮目录不建 |
| ④round-id 后缀双面 | wiring 红:rejects 消息不匹配(/形状须…-discover/ 不中,P0 拦截面) | 绿后双面真拒 |
| ⑤全 faux 六步 | 同③ wiring 红(轮未起) | 绿后六步/信封/09-budget env 面 5 键/台账行/门序全验 |
| ⑥工件闭包+SCAN 确定性 | `Cannot read properties of undefined`(runD 未成) | 绿后含独立树重扫逐字节同 |
| ⑦SHORTLIST 降级 | 同③ wiring 红(降级断言不可达) | 绿后坏 fixture 真跑解析失败路径:candidates[]+degraded+d3 零行+d4 零入队 |
| ⑧ENQUEUE 写路 | `The "path" argument must be of type string`(ENQUEUE 步未实现) | 绿后含 flock 真写+幂等去重 |

**四例法定红对应**:旋钮负值拒=①(结构红+readKnob 合同注)/月帽共享=③/round-id 后缀=④/SHORTLIST 降级=⑦——各一例真红在案。

## 自决清单(实现者拍板项,评审可翻)

1. **轮型推断**:typeOfRoundId 由 round-id 后缀推断(显式 type 优先)——测试/agent 侧可只给 id;两者不符由 per-type 正则拦。
2. **LEDGER_TAGS 与 ENQUEUE_EXCLUSIVITY_GATE 放 steps.mjs 导出**(步写面/门读面同源单源),gates.mjs import 消费。
3. **SCAN 不加 NEEDS_FILE env 缝**(repo 相对路径直读):避免 OPS_* 表闭包噪音;T2/T3 需要时再加。
4. **d2 transcript 不入名表**(任务明令四名);发现轮闭包=discoverArtifactNames()∪transcript 字面。
5. **健康轮既有断言 per-type 化**:门契约=GATE_SEQUENCE↔双管线执行序**并集**双射;健康轮门数/门序从 HEALTH_PIPELINE 派生(HEALTH_GATES_SEQ/HEALTH_GATE_COUNT);golden/run-golden.mjs 同判例(GATE_COUNT→HEALTH_PIPELINE.filter)。
6. **faux canned 两候选=queue 零入队**(排他率 null→skip):罐装轮不写 queue(测试树内也无 queue 副作用),ENQUEUE 真写路由独立例⑧直调步验证。
7. **replay 末步工件 per-type**(health=07-synth-report.md/discover=d4-enqueue.json);resume 正则/旋钮回退读面/pending 步序 per-type。
8. mkCtx 的「P0 仅健康轮管线」throw 由 PIPELINES 闭集校验替代(历史使命完成)。

## 给 T2(#208)/T3(#209)的接线点说明

**T3 已交卷(0cc76b1d),按其接线协议对接**(DP-T3-REPORT):
- SHORTLIST:模型步真面工具注入=`discovery-host.mjs mkDiscoveryHost() → {tools,seeds,channelCounts,call}` 直装(runRealStep 的 DEEP 判例位:mkDiscoveryHost 替代 mkMicroprobeHost);ctx 级 dupRegistry 沿用(旋钮族 dupCallLimit 同读);轮级 breaker 同面。
- MEASURE:探针调用=`host.call`(T1 的 uncertainty hold 行在 T3 后由真实读数替换,超时面仍 hold)。
- CLOSE:`readings.discover_channels=discoverChannelReadings(host.channelCounts)`(09-budget.json 增读数面;G_CLOSE 的 BUDGET_ENV_KEYS per-type 已就位)。
- 候选 schema 校验=`discover-candidate.mjs`(12 导出面)——G_SHORTLIST/G_MEASURE 行形状校验升级时消费(T1 最小形状版由 gates.mjs 内联,T2 #208 强化时收口)。
- SCAN web 面:`channels.web` 从 placeholder 升真读(host.tools 的 web 三工具=候选宇宙第三渠道),渠道闭集 `[source_registry,needs,web]`。
- T2 #208 四门强化:G_SHORTLIST span 逐字回引(spanMatcher)、G_MEASURE 数字复算、G_ENQUEUE 对账;T1 已把四门名+序+最小形状钉进 GATE_SEQUENCE 双射面(单侧改门即红)。

## 余项(非 T1 面)

- T2 #208:四门强化+spanMatcher+selftest 罐装篡改红。
- T4:STANDARD/GLOSSARY/北星/CHANGELOG(本票未动 CHANGELOG——伞 #206 收口批处理)。
- 生产激活面:OPS_DISCOVER_* 三旋钮缺省值(30/3600/¥5)即生效,无需 env;与 #199 判例同(agent.mjs SPAWN_CONTRACT_ENV 已含三名)。

*报告人:T1 实现者(worker);2026-10-26;40min 顶内完成,无撞墙。*
92 changes: 92 additions & 0 deletions DP-T2-REPORT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# DP-T2 交卷报告 — #208 四门强化 + span 级回引 + 哨

工位:`.worktrees/dp-t2`(分支 `feature/dp-t2`,基 = 集成分支 `feature/discover-pipeline-v0` @ `4b1c8720`,无 merge 需求)
纪律:40min 墙两段(原跑被截断→续作存量入库 `ae96a298`);禁 push 已守;dp-t1/dp-t3 worktree 零触碰。

## 交付件(对照任务书 1-5)

1. **spanMatcher 纯函数**(新 `ops/agent/pipeline/citation.mjs`):`(quote, evidenceText)→bool`,
基律=朴素 `String.includes` 逐字律(零归一化零 trim)+ **URL 边界律**(自铸判例):quote 中
URL 记号须在 evidence 中**定界在场**(相邻字符∉ URL 字符集,逗/分号=散文定界符)——杀前缀子串
(`https://ip.thc` ⊂ `https://ip.thc.org`)而恰等仍收。
三负例判例全钉:**幽灵 URL**(引不存在的 URL)/ **半真 URL**(前缀子串+超集串两侧)/ **改写引文**
(大小写/标点改写)全 must-reject;恰等+真 span must-accept;空串/非串拒。
同文件:`scanEvidenceFace(scan, ptr)` 三形解析(见自决③)、`ptrForm` 本地分类器、
`canonicalJson` 稳定序列化;`containsExactString` 同律复刻(T3 未导出,单源判例注记)。
2. **G_SHORTLIST 升格**:T1 形状检查→span 级语义门。7 键闭集形状(name/quote/evidence_ptr/source_channel
串;url null|http(s);exclusivity null|[0,1];未知键拒)→ `scanEvidenceFace` 解析 → `spanMatcher`
逐字对账;门败 reason 带候选名+证据指针;degraded 串合法(span 面 N/A,零候选合法)。
3. **G_MEASURE 强化**:宿主重算三面——排他率透传(d3 行值 ≡ shortlist 候选值 ?? null)、存在性计数
(`evidence_local_ok` 经 `scanEvidenceFace` 重算,不一致=FAIL 带两值)、hold_n(原有)。行须按名映射到
shortlist 候选(无源读数=FAIL)。
4. **G_SCAN/G_ENQUEUE 查漏**:G_SCAN += 条目自洽(needs 指针 `^NEEDS\.md:L\d+$` + text 非空;
registry 指针 `^backend/ipdb/_sources/<stem>\.py$` + name≡stem)。G_ENQUEUE += 入队行三判据复算
(evidence_local_ok===true ∧ exclusivity≥0.25 ∧ control_executable===true,违者 FAIL 带数字)
+ **穷尽哨**(每 shortlist 候选必在 enqueued∪skipped——证据永不灭失)。GATE_SEQUENCE 派生注册面
零手抄(selftest-pipeline ~L176 双表并集双射哨既有,已核在场)。
5. **selftest/golden 扩例**:selftest-pipeline 四门篡改红期例(每门一例真红:G_SCAN 指针自洽/
G_SHORTLIST 标点改写 U+FF08 半角(→全角(/G_MEASURE 数字漂移/G_ENQUEUE 幽灵入队;未篡改原轮四门
全绿对照)+ spanMatcher 三负例例 + scanEvidenceFace 三形例 + SCAN 真面直调例(registry≥40 +
needs text 面 + 真面工件过 G_SCAN);golden 新例 `pipeline_discover_full_faux`(真跑),run-golden
轮型/roundId/门数从用例+轮型定义表派生(缺省=健康,位等价);standard-check 挂点行=T4 未动。

## 自决(裁定记录)

- **①SCAN faux 缝**:`steps.mjs` SCAN 增罐装宇宙缝(modelFace==="faux" ∧ fixturesDir 有
`d1-scan.json` → 轮工件候选宇宙=fixture 钉死)。理由:span 门把罐装 quote 与真仓 NEEDS.md 文本
耦合,仓文演进会破门 CI 假红;faux=罐装 I/O 判例(#170);真轮(缺省)零影响。真面由「SCAN 真面
直调」例独立钉。
- **②needs 条目 text 面**:真面 SCAN needs 行增 `text`=原文行快照(registry 行结构性无 text)。
理由=证据永不灭失:门重放从轮工件回算,quote span 对账面必须入轮工件(G_VERIFY 快照判例同律);
现薄形(name/url/ptr)无引文可引。
- **③T3 文件不动 + 双协议分立**(父会话裁定确认):`discover-candidate.mjs` 的
validateCandidate 保严律(url 必填/exclusivity 必填/两形指针)——那是独立候选面(PROPose 卡)的必填律;
发现轮回引面(needs 行合法无 URL/null 排他率/透传指针)在 G_SHORTLIST 门面自检 + citation.mjs
`ptrForm` 本地三形分类器(url/artifact=复用 T3 导出面,scan 形=透传 repo 路径/行锚)收口。两闭集
分立非冲突;selftest T3 钉例(url:null 拒等)未动,加注记。
- **④URL 边界律自铸**:纯 includes 律下半真 URL 前缀子串会假绿,定界判(邻字符∉URL 字符集)杀之;
判例注记在 citation.mjs 头注。
- **⑤T1 工件闭包例改指罐装计数**(registry 1/needs 2 + text 面),原真面断言(≥40)移至「SCAN
真面直调」例——职责分立:闭包例钉 faux 轮固定面,直调例钉真面扫描。
- **⑥golden 09 断言初值 2/1/900 为我臆写,首跑红(实际缺省 30/5/3600/0.05)即改钉真缺省面**——
golden 钉缺省值不动旋钮,红即纠。

## 验收门(全绿)

| 门 | 数字 | 基线 |
|---|---|---|
| selftest-pipeline | **100/0** | 96 不降 + Δ4 新例(spanMatcher 三负例/scanEvidenceFace 三形/四门篡改红期/SCAN 真面直调) |
| selftest-t4 | **63/0** | 63 ✓ |
| selftest-contract | **18/0** | 18 ✓ |
| golden(真跑 run-golden) | **10/0** | 9+Δ1(`pipeline_discover_full_faux`)✓ |
| standard-check | **47/0**(挂点 31) | 47 不降 ✓ |
| node --check | 全过(citation/gates/steps/selftest-pipeline/run-golden) | ✓ |

红测真红记录:实现前首跑 94/6(citation 缺失/闭包计数/真面 text/GATES 作用域)+ 95/5(透传形三形外
主根因)→ 修复后 100/0;四门篡改例在无强化门实现期即红(gates.mjs 改前 G_SHORTLIST 篡改例真红已录)。

## commit 链(基 4b1c8720)

- `afff7252` 占位(#208 开工)
- `ae96a298` 续作存量入库:citation.mjs + gates.mjs 四门 + steps.mjs 三件 + fixture + selftest 新例
- `3d1ab1f5` golden 扩发现轮用例(run-golden 轮型派生)
- `b042de51` shortlist prompt span 律名面(幽灵/半真/改写三门败——faux 不读 prompt,真轮模型需此告知)

## 与 T1/T3 接线对拍

- **T1**(dp-t1-report 接线协议):①d1 形状微扩(text 键新增)——G_SCAN 自洽门兼容两代工件
(text 非空串才查,结构性 registry 行无 text 合法);②T1 自测「全 faux 六步」原断言未破(计数面
改指罐装已在自决⑤注记);③**回放注意**:T1 时代已存的发现轮工件(若 d1 无 text、d2 quote 非逐字)
过不了新 G_SHORTLIST/G_SCAN——生产尚无发现轮(T1 #207 起未跑真轮),无回放损失。
- **T3**(dp-t3-report 接线协议):①discovery-host 的 `filterCandidatesByEvidence`(T3 纯函数面)
与本轮 `scanEvidenceFace` 分工——前者=web 三工具读数的证据存在性(独立候选面),后者=发现轮
d1 宇宙回引面(轮工件重放律);②T3 validator 严律保留,双协议分立(自决③);③T3 web 渠道接线
(channels.web placeholder)留 PR3a,本轮零动;④T3 的 `candidateSourceSlug`/queue 卡行在 G_ENQUEUE
穷尽哨语义下兼容(enqueued 行 source=slug ↔ shortlist name 小写化映射已核)。

## 残留/移交

- T4(STANDARD.md 挂点行典章)未动——四门注册面 GATE_SEQUENCE 派生零手抄已核,挂点行由 T4 录。
- 真轮首跑时 prompts/discover/shortlist.md span 律已名面落字;模型实测改写率待冷启动验收面。
- golden `pipeline_discover_full_faux` 的 09 断言钉的是**缺省旋钮面**(30/5/3600/0.05),旋钮改缺省
须同步此例(与 health 例同维护律)。
Loading
Loading