Skip to content

EVGAP-02 CRC linkage 抽取结果审核(Tier 1 已执行,20 条验证全通过) - #62

Open
leezx wants to merge 2 commits into
mainfrom
task_20260805_evgap-02-extraction-result
Open

EVGAP-02 CRC linkage 抽取结果审核(Tier 1 已执行,20 条验证全通过)#62
leezx wants to merge 2 commits into
mainfrom
task_20260805_evgap-02-extraction-result

Conversation

@leezx

@leezx leezx commented Aug 5, 2026

Copy link
Copy Markdown
Owner

这个 PR 是什么

gen_iet_evgap_02_crc_linkage_20260805T190453Z结果审核。授权依据是 PR #61APPROVE 并合并的契约(其 blocked_by 只有 contract_approval,已满足)。

产物全部在外部 DATA,本 PR 只含一份 handoff 与一条 worklog(2 文件,+172/-0)。

请上传这个包:

DATA/2.PROJECTS/Stelligen-ADCdev-OS/result/
  gen_iet_evgap_02_crc_linkage_20260805T190453Z.zip

ZIP SHA-256 9c9c184e7b66e2999950831a18e059847c3b7dfd4a5b6f92ac78ac9dce259ece,148,063 bytes,六个产物文件。


执行前先测可达性

契约把来源不可达定为须记录的事实而非可静默跳过,故先逐个测试六个必查 endpoint,全部应答:PubMed/PMC(NCBI E-utilities)、ClinicalTrials.gov API v2、GEO(db=gds)、TCGA(GDC genes API)、Human Protein Atlas。

检索次数 451
不可达 0
target 级完整(按 endpoint 判定) 41 / 41
pair 级 D 类完整 369 / 369

LOCK-03 结果

规则 outcome disposition state 数量
L3-02 linkage_evidence_exists RETAIN active 168
L3-03 linkage_unassessed DEFER hold 192
L3-05 no_known_linkage_after_complete_search EXCLUDE_FROM_ACTIVE_POOL reactivation-eligible 9

168+192+9 = 369。L3-01L3-04 本次为空规则——无检索不完整的 pair,也未采集到「仅其他癌种 precedent」的证据。

192 个 hold 的来由

context active
crc_mss_pmMR_mcrc_3l_plus(canonical) 40
crc_cms4_emt_oncofetal_revCSC_high 33
crc_mss_ras_mut_1l_2l_post_chemo_bev 19
crc_msi_h_dmmr_io_resistant / crc_mss_ras_mut_3l_plus 17 / 17
crc_braf_v600e_post_targeted 14
crc_her2_positive_post_treatment / crc_kras_g12c_post_targeted 11 / 11
crc_mss_ras_wt_antiegfr_resistant 6

canonical 只要有 A/B/C 证据即可 RETAIN,故 40 个靶点全 active(41 个中只有 EDBN 无 A/B/C 证据)。8 个亚群必须同时有 D 类情境特异证据——这正是 192 个 L3-03 的差别:有疾病级 CRC 证据,但该亚群没有情境特异富集证据。

证据行 7,067:A 2,808 / B 2,295 / C 1,746 / D 218。context_specific = true 仅 D 类 218 行。

一条必须写明的证据强度限制

全部 7,067 行 review_status = machine_retrieved_requires_human_reviewevidence_direction = unknown

这些是按冻结查询式检索到的公开记录——PMID/PMCID/NCT/GEO 登记号都可点击回溯,但内容未被阅读、未被人工判读。按 PR #58 已获接受的 DECISION-02,machine-retrieved 证据满足 LOCK-03 的存在性,但该 pair 不得晋级 Level 02

所以 168 个 active 的含义是「存在待复核的 CRC-specific linkage 记录」,不是「linkage 已确证」。

四条 mandatory findings

  • MF-L01 RETAIN 只表示存在可回溯的 CRC-specific linkage 记录,不表示适合 ADC、不表示疗效、不表示治疗窗
  • MF-L02 C 类 1,746 行全部 is_adc_efficacy_evidence = false
  • MF-L03 未使用任何派生本地库,完整性只在 Tier 1 范围内成立SRCADM-02..05 仍待准入,日后扩大须另开 PR 重跑
  • MF-L04 RETAIN 不使 pair 进入 Level 02;369 行 may_advance_to_level_02 全为 false

只有一个靶点完整检索后无 linkage

EDBN(9 个 pair)。非标准符号(fibronectin EDB 结构域),在 Level 01 Preview 中也是 E1-05 不在 surfaceome 参考库。L3-05 可逆is_scientific_disproof = falseis_killed = falsereactivation-eligible,仍留在 Eligible Universe Index——不是科学证伪、不是淘汰

一处我自查并修正的问题

首版 evidence 表缺契约要求的 4 列(pair_idclinical_context_idcontext_specificlinkage_outcome);而且 A/B/C 按契约是按 target 检索一次,导致单条证据无法携带唯一 pair_idVAL-L16 不可满足。这是我没把「按 target 检索」与「按 pair 记录证据」对齐。

修正方式是让输出符合已冻结 schema,而不是改契约:把 target 级记录按 pair 展开为 7,067 行,未重复任何网络调用、未改变任何已检索事实,只改表示形式。

验证

契约 20 条 VAL-L01..VAL-L20 逐条对实际产物核验,全部 PASS,含:VAL-L09 两张表列集合逐表相等;VAL-L16 全部引用 id 存在于 evidence 表且 pair_id 一致、7,067 个 id 无重复;VAL-L17 逐规则引用约束全满足;VAL-L18 369 pair 六个 D 类字段齐备;VAL-L20 evidence_row_count 等于三组 refs 去重总数。

仓库侧:Ran 338 tests 通过;scripts/verify_repository_boundary.sh 通过;运行期间仓库零写入。六个产物 SHA-256 见 handoff 附录 A 并写入 source_manifest.json

没有做什么

  • 未运行 Gate、未赋分数、未评估 T2/T7、未排序、未划 Tier、未推荐资产、未给实验建议。
  • 未新增靶点或 context(0/0);未打开任何 Tier 2 派生本地数据库;未引用被隔离运行产物。
  • 本 PR 不解除 EVGAP-02——须待本结果获批后另开 PR 更新绑定。
  • 未解除 EVGAP-01,未更新 Level 01 绑定,Level 01 仍不可执行。
  • 未生成 ADC_POOL_LEVEL_01_ACCEPTED;未补八份批准记录。

下一步

  1. 本结果 APPROVE
  2. 另开 PR 绑定产物并解除 EVGAP-02
  3. Track B:SRCADM-01EVGAP-01 抽取 → 结果 → binding
  4. 两个缺口都解除后才能生成 ADC_POOL_LEVEL_01_ACCEPTED

本 PR 不适用 AGENTS.md「审核豁免」,须经 ChatGPT APPROVE。批准只代表接受这次抽取的产物为可审计证据层;不批准任何靶点适用性、疗效或治疗窗结论,不解除 EVGAP-01,不授权执行 Level 01,也不授权任何 pair 进入 Level 02。

Executed the Tier 1 extraction authorised by PR #61, whose only blocker was its
own approval. Every artefact is external; this PR carries a handoff and a worklog
entry.

Reachability was tested before executing, because the contract makes an
unreachable source a recorded fact rather than a silent skip. All six required
endpoints answered: PubMed and PMC via NCBI E-utilities, ClinicalTrials.gov API
v2, GEO via E-utilities db=gds, TCGA via the GDC genes API, and the Human Protein
Atlas search API. 451 searches, zero unreachable, 41 of 41 targets complete at
endpoint granularity, and all 369 pairs complete on the class D layer.

LOCK-03 came out at 168 L3-02 retain/active, 192 L3-03 defer/hold and 9 L3-05
EXCLUDE_FROM_ACTIVE_POOL/reactivation-eligible. L3-01 and L3-04 are vacuous this
run: no pair had an incomplete search and no other-cancer-only evidence was
collected. The canonical context retains 40 of 41 targets because it needs only
A/B/C evidence; the eight subgroups retain between 6 and 33 because each also
needs class D context enrichment, and that gap is exactly what the 192 holds are.

Evidence strength, stated plainly rather than buried: all 7,067 rows are
machine_retrieved_requires_human_review with evidence_direction unknown. They are
public records retrieved by the frozen queries, with PMIDs, PMCIDs, NCT numbers
and GEO accessions that resolve, but their contents were not read. Under
DECISION-02, accepted in PR #58, machine-retrieved evidence satisfies LOCK-03
existence while barring the pair from Level 02. So the 168 active pairs mean a
CRC-specific linkage record exists pending review, not that linkage is
established.

Only EDBN reached L3-05 across all nine contexts, and that outcome is reversible:
not scientific disproof, not killed, reactivation-eligible, still in the Eligible
Universe Index.

One defect of mine, found by self-check and repaired: the first evidence table
lacked pair_id, clinical_context_id, context_specific and linkage_outcome, and
because A/B/C are searched once per target a single row could not carry a unique
pair_id, leaving VAL-L16 unsatisfiable. I had not aligned "searched per target"
with "recorded per pair". Fixed by conforming the output to the frozen schema
rather than amending the contract: target-level records were expanded into 7,067
pair-level rows with no network call repeated and no retrieved fact altered.

All twenty contract validation rules VAL-L01 through VAL-L20 were checked against
the actual artefacts and all passed. The package is at
external:result/gen_iet_evgap_02_crc_linkage_20260805T190453Z.zip, 148063 bytes,
SHA-256 9c9c184e7b66e2999950831a18e059847c3b7dfd4a5b6f92ac78ac9dce259ece.

No Gate run, no score, no T2 or T7 assessment, no ranking, no Tier, no asset or
experimental recommendation, no target or context added, no Tier 2 database
opened, no quarantined artefact used. EVGAP-02 is NOT lifted by this PR and
EVGAP-01 is untouched, so Level 01 remains unexecutable.

338 tests pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…act to v0.2.0

PR #62 review: the run registered search hits as linkage evidence. Verified
against the actual files first — every point holds. All 7,067 rows carried
evidence_direction=unknown, and no assertion-bearing field was populated
anywhere: prevalence empty in all rows, is_adc_efficacy_evidence false in all,
protein_or_rna unresolved in all 5,699 literature rows. Not one extracted
assertion.

Root cause is the contract. v0.1.0 required evidence_direction as a column but
no rule required it to be resolved, and nothing constrained where linkage_class
came from — so it came from the query category. A fully compliant run therefore
produced 168 RETAIN.

Contract v0.2.0 adds the missing layer: L-RETRIEVAL / L-ASSERTION /
L-DISPOSITION, six assertion elements with assertion_direction=unknown banned,
identity_resolution with rule L3-00, per-endpoint admissibility, and
VAL-L21..VAL-L28. L3-00 reuses the frozen LOCK-03 outcome
linkage_evidence_missing rather than introducing one, because
identity_unresolved belongs to LOCK-01's vocabulary.

The run is rebuilt as an L-RETRIEVAL product with no network call repeated and
no record discarded: 979 distinct records (the 7,067 figure was 979 replicated
across 9 contexts), zero assertions, and all 369 pairs deferred — 36 under
L3-00 for the four unresolvable entities, 333 under L3-01. EVGAP-02 stays open.

GAP-P07 recorded, not fixed: four of the 41 frozen targets are not resolvable
protein entities. Fixing the axis here would be a silent axis change.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@leezx

leezx commented Aug 5, 2026

Copy link
Copy Markdown
Owner Author

第二轮修订:结论成立,已降级为检索候选层,契约修订至 v0.2.0

在改动任何东西之前,先对实际文件逐条核验。审核意见全部成立。

比审核描述更彻底的一点

不只是 evidence_direction = unknown——没有任何一行带有已解析的断言字段
positive_fraction_or_prevalence 在 7,067 行中全为空is_adc_efficacy_evidence 全为 false
malignant_cell_attribution 全为 unresolvednot_applicable,5,699 条文献行的
protein_or_rna 全为 unresolved一条已抽取的断言都没有。

一处需要更正的细节

审核说 TCGA 与 HPA 的命中被算作 A 类证据。实测它们没有产生任何证据行——
source_ref 前缀只有 PMC 3,240/PubMed 2,459/ClinicalTrials.gov 702/GEO 666。
原则完全成立,实际的实例是 GEOdb=gds 元数据命中被登记为 666 行 A 类。
v0.2.0 把三个 dataset endpoint 一并禁用为 A 类依据,同时保留其必查地位。

一处比审核意见更严重的发现

Undisclosed 不是实体,是缺失值占位符,却被当作基因符号检索:PMC/A 返回 1,384 条,产出 1 个 RETAIN。
CA19-9(糖类抗原,无 HGNC 符号):PMC/A 14,200 条,9 个 pair 中 8 个 RETAIN

EDBN:11 个 endpoint 全部 0 命中,9 个 pair 落 L3-05 EXCLUDE。它疑指 fibronectin 的
extra domain B(标准符号 FN1)——被排除的唯一原因是这个缩写不通行于文献。
消歧失败被当成了完整检索后的阴性结论。

自查发现、审核未提的第三项缺陷

未披露的检索截断。 451 次检索报告命中合计 718,140,实际登记 979 条;
333/451 次被截断,多数每组只留 3 条。revision 1 未声明此上限却宣称检索完整。

根因在契约,不只在执行

v0.1.0 把 evidence_direction 列为必需列却无任何规则要求其被解析
linkage_class 也无规则约束其来源,于是由查询类别决定。
一次完全合规的执行因此产出 168 条 RETAIN。 故修在契约。

契约 v0.2.0

  • 三层:L-RETRIEVALmay_support_lock_03: false)/L-ASSERTIONL-DISPOSITION(只能引用 assertion)
  • assertion_requirements 六要件,硬性禁止 assertion_direction = unknownVAL-L21
  • linkage_class 由内容判定;候选表改记 query_class_label不得含 linkage_classVAL-L25
  • identity_resolution + 新规则 L3-00(优先级最前)。关键是不对称:未消歧实体既不得 RETAIN,也绝不得 EXCLUDE
  • endpoint_evidence_admissibility 逐 endpoint 写明命中证明什么、不证明什么;ClinicalTrials.gov 须五个结构化字段 + 同臂VAL-L28
  • search_complete 扩为四层,含 assertion 抽取完成
  • 新增 VAL-L21..VAL-L28

L3-00 不引入新 outcome:LOCK-03 词表由 PR #57 冻结、其中没有 identity_unresolved
(只属 LOCK-01),故复用 linkage_evidence_missing,身份信息另由 identity_resolution_status 列承载。

结果降级(revision 2)

revision 1 revision 2
证据表 pair_linkage_evidence.tsv 7,067 行 撤销 → retrieval_candidates.tsv 979 + linkage_assertions.tsv 0
L3-02 RETAIN 168 0
L3-03 192 0
L3-05 EXCLUDE 9 0
369 pair 三分 全部 DEFER / holdL3-00 36 + L3-01 333)

未重复任何网络调用、未丢弃任何已检索记录。
「7,067 条证据」实为 979 条记录乘以 9(A 2808/9=312、B 2295/9=255、C 1746/9=194、D 218 不复制)。

上游缺陷 GAP-P07(登记,不修)

PR #58 冻结的 41 个 target 中至少四个不是可消歧的蛋白实体。EVGAP-02 无权改轴——
在本契约内给 Undisclosed 编身份等于静默改轴。

值得注意:binding 本身已察觉这一点,它把 identity_unresolved 列入 unavailable_outcomes
理由是「已批准层没有身份解析结论字段」。四个实体因此以 E1-05 留在轴上。
缺陷在 PR #58 时已可见,只是当时无法表达。 修复须另开 PR,会改动 41/369 两个冻结计数。

验证

  • 外部产物经 25 项 v0.2.0 规则核验全通过
  • tests/test_evgap_02_crc_linkage.py 44 tests;全库 Ran 353 tests OK;boundary check 通过
  • 15 个变异全部被捕获,逐个 diff -q 回滚干净

待上传的结果包(revision 2)

  • gen_iet_evgap_02_crc_linkage_20260805T190453Z_rev2.zip
  • ZIP SHA-256 e8f2a7f5ce9fae25265994f0d9a1fae1e371a1bb55ccafea2026835bd5120d3d
  • 41,734 bytes,8 个条目

EVGAP-02 未解除。ADC_POOL_LEVEL_01_ACCEPTED 不成立。

后续:本修订获批 → 另开 PR 处理 GAP-P07 → 执行 L-ASSERTION 抽取 → 结果 PR → 解除 EVGAP-02

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant