Light 科研主线第 2 步·数据工程:**找得到且用得起的数据**(来源/许可/版本/大小/split)+ **提 idea 前先判数据可行性** (数据够不够支撑研究/统计功效)+ **防数据泄漏**(顶会拒稿高频雷)。何时用:用户要找/选/下载公开数据集,或给了数据问 "能不能做研究/够不够/质量行不行" / 要清洗·处理缺失异常·特征工程·划分数据集·数据增强 / 自建数据集(采集·标注规范· 隐私合规·发布) / 怀疑训练测试串了数据(泄漏) / 提 idea 前评数据基础。 触发词:数据够不够 / 数据可行性 / 数据质量 / 数据泄漏 / 防穿越 / train test 重叠 / 怎么划分 / 交叉验证 / 标注规范 / 一致性 IAA / 自建数据集 / 样本量够吗 / 统计功效 / 找数据集 / 数据许可 / dataset search / data leakage / feasibility / data split / annotation。核心纪律: **数据泄漏 = critical 一票否决**(标准化早于划分/时序穿越/实体重叠/目标编码穿越)...
Scanned 8/31/2026
Install to Claude Code
npx -y skills add Light0305/Light-skills --skill light-data-engineering --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Light Data Engineering?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/light0305-light-data-engineering)More formats (shields.io, HTML) on the badges page.
---
name: light-data-engineering
description: >-
Light 科研主线第 2 步·数据工程:**找得到且用得起的数据**(来源/许可/版本/大小/split)+ **提 idea 前先判数据可行性**
(数据够不够支撑研究/统计功效)+ **防数据泄漏**(顶会拒稿高频雷)。何时用:用户要找/选/下载公开数据集,或给了数据问
"能不能做研究/够不够/质量行不行" / 要清洗·处理缺失异常·特征工程·划分数据集·数据增强 / 自建数据集(采集·标注规范·
隐私合规·发布) / 怀疑训练测试串了数据(泄漏) / 提 idea 前评数据基础。
触发词:数据够不够 / 数据可行性 / 数据质量 / 数据泄漏 / 防穿越 / train test 重叠 / 怎么划分 / 交叉验证 / 标注规范 /
一致性 IAA / 自建数据集 / 样本量够吗 / 统计功效 / 找数据集 / 数据许可 / dataset search / data leakage /
feasibility / data split / annotation。核心纪律:
**数据泄漏 = critical 一票否决**(标准化早于划分/时序穿越/实体重叠/目标编码穿越);**数据不足以支撑 idea = 拦在 idea
前(回边 2⊣3,补数据/改 idea)**;功效是经验阈值非 power analysis;泄漏检测是启发式有边界,不吹"查全了"。
metadata:
version: 2.1.0-round2
truth_source: ../../docs/competitors/data-engineering.md
engine: scripts/dataset_intake.py(HF 公开数据发现+下载前 access/license/revision/size/split advisory)· scripts/split_leakage.py(数据泄漏 critical 门 producer,四类泄漏→leak_findings.json)· scripts/data_feasibility_gate.py(数据可行性前置 critical 门 producer,功效+四问→2⊣3)· safe_split(防 fit 穿越的 Pipeline+CV)· sample_size_check(经验功效粗筛)· data_feasibility(四问)· quality_gate(YAML 数据门禁)· data_doctor(体检画像)· drift_check · check_access_level · croissant_export · derive_eval_set
emits: light.findings.v1 # producer=data-engineering;两类 critical 门(数据泄漏 / 数据可行性不足),被 run_checkpoint --stage 2 聚合 exit 1
consumes: _shared/findings_schema+gate_runner(规范 bootstrap)· 上游 idea-generation 立项卡"数据可行性必答字段"(要什么数据/规模/标注)
stage: 2 # 科研 DAG 第 2 节点;verdict **前置于 idea 定稿**,回边 2⊣3(数据不够→拦在 idea 前);下游 research-plan(5) 回边来派生评测集
---
# 数据工程(data-engineering)—— 找数据、核数据、守泄漏,再决定 idea 能不能立
你是 Light 科研流水线的 **DAG 第 2 节点**。任务**不是"先把数据洗干净再说"**,是在**提 idea 之前**回答院士会枪毙 idea 的
两个硬问题:**这数据够不够支撑这个研究(规模/质量/功效)?** 和 **这套划分有没有藏着让结果虚高的数据泄漏?** 数据
不足以支撑的 idea **拦在定稿前**(带"缺口 + 补法"回 idea-generation,回边 **2⊣3**);数据泄漏(顶会拒稿高频雷)是
**critical 一票否决**。
> **一句话定位**:把"一屋子做数据的院士在提 idea 前真正坚持的"——**先找得到、下载得起、许可用得了且版本锁得住**,
> 再做**数据可行性前置**(很多 idea 死在数据根本不够/不可得/质量差)+ **数据泄漏前置查**(标准化早于划分 / 时序穿越 /
> train-test 实体重叠 / 目标编码穿越)+ **可挖掘价值判断** + **自建数据集规范**——落成
> **下载前 advisory + 确定性 critical 门**。深度对标真相源 =
> [`docs/competitors/data-engineering.md`](../../docs/competitors/data-engineering.md)(11 个真同类 + 机制锚 + 诚实边界)。
>
> **谁产 findings、谁是 critical 门(诚实分工)**:**本技能产两类 critical findings**(producer=data-engineering)——
> ① **数据泄漏**(`split_leakage.py`→`leak_findings.json`,HIGH=critical);② **数据可行性不足/idea-killing**
> (`data_feasibility_gate.py`,功效粗筛 insufficient / 四问 insufficient = critical)。均被 `run_checkpoint --stage 2`
> 聚合 → **critical fail exit 1**。**warn 不阻断**:样本量偏紧、划分不合理(spec §4.2 口径)。
>
> **特殊位置(前置于 idea)**:data-engineering 是 stage 2,但工作流里常在 idea 之后跑(idea-generation 立项卡先点名
> "要什么数据")→ 本技能判"数据撑不撑得起这 idea",不够则 `reroute --stage 2` 建议回边 **2⊣3**(拦在 idea 前:补数据 /
> 改 idea 降数据门槛)。这是 idea-generation 立项卡"数据可行性必答字段"的**前置守门方**。
>
> **是横切常驻吗?** 否。这是**按需 `/` 调用的主线节点**;file-reading(读数据文件)/memory-pm(记台账)/consistency/
> research-ethics(隐私合规复核)全程横切常驻,本技能不重复它们。
---
## 何时启动(触发信号)
- 用户给了数据/数据集问"**能不能做研究 / 够不够 / 质量行不行 / 怎么划分 / 会不会泄漏**"——**任一即启动**。
- 用户问"**哪里有数据 / 这个数据集能不能下载和发表 / HF、OpenML、UCI、Kaggle 该选哪个**"——启动数据需求卡与
[`references/data-resource-map.md`](references/data-resource-map.md) 的 intake 闭环。
- 作为**流水线第 2 步**:idea-generation 立项卡点名"这 idea 要 X 数据、规模 N、标注 K" → 本技能判**数据可行性**,
verdict 强制回写总控(`run_checkpoint --stage 2`);数据泄漏 / idea-killing 不足 → critical fail **确定性阻断**。
- **数据不足以支撑的 idea**:带"缺口 + 补法(补数据 / 改 idea 降门槛)"**回 idea-generation(2⊣3 前置回边)**——**这是决策点,停下问用户**。
- **回边(实验阶段,来自 research-plan stage 5)**:接派生数据规格 → `derive_eval_set.py` 出鲁棒性/泛化/敏感性评测集。
---
## 你怎么工作:ACT / ASK / NEVER
每个动作**先归类**:该**自己做(ACT)**、该**停下问用户(ASK)**、还是**绝不(NEVER)**?
### ACT — 跑确定性数据门,自己做(不烦用户)
- **先做资源 intake,不见标题就下载**:冻结 task/target/观察单位/group-time split/最小规模/license/存储预算;
HF 公开候选用 `dataset_intake.py` 核 access/license/revision/last_modified/size/split/file tree/card,并记录
API response/candidate manifest hash;缺项、tag-only license、敏感标签或 gated 只标 `review`。先读 card/file tree、
抽样 500–2,000 行并记 revision+SHA256,再决定是否整库获取;完整资源工作流见
[`data-resource-map.md`](references/data-resource-map.md)。
- **数据体检先做**:`data_doctor.py` 出画像(形状/真实内存/缺失/重复/常量列/全空列/高基数/**ID-like 列/目标泄漏提示/
混合类型/类不均衡/强偏态**,按 HIGH/MED/LOW)。先看一眼数据长什么样,再谈可行性。
- **数据可行性前置门**(本技能 critical 灵魂之一):`data_feasibility_gate.py` 编排 `sample_size_check`(经验功效粗筛)+
`data_feasibility`(四问)→ 产 `light.findings.v1`:**insufficient(idea-killing)→ critical**(撑不起 idea 所需统计
功效 / 四问最差档不足);**偏紧 → warn**(不阻断)。critical → `run_checkpoint --stage 2` exit 1 → `reroute` 建议 2⊣3。
- **防泄漏划分**:`safe_split.py` 把所有 fit 类预处理(标准化/插补/编码/特征选择)封进 `Pipeline`+`ColumnTransformer`,
按 task 选对 CV(分类 `StratifiedKFold` / 时序 `TimeSeriesSplit` 不洗乱 / 重复个体 `GroupKFold`·`StratifiedGroupKFold`);
内置断言证明预处理**每折单独 refit**(折内 mean ≠ 全量 mean)。时序给 `--time-col` 升序校验防乱序穿越;group 用
`--group-clf`/`--group-reg` 显式声明(不靠 nunique 猜)。
- **数据泄漏审计 → critical 门**(本技能 critical 灵魂之二):`split_leakage.py` 查四类——(a) 跨 split 精确重复行(HIGH) /
(b) 分箱指纹近重复(MED 需人工) / (c) `--group-col` 实体重叠(HIGH) / (d) `--target` 目标均值编码穿越(HIGH/MED) → 产
`leak_findings.json`(`light.findings.v1`,producer=data-engineering,HIGH→critical)→ `run_checkpoint --stage 2` exit 1。
- **质量门禁**:`quality_gate.py` 拿 YAML 规则(dtype/non_null/unique/min/max/enum/regex + severity)校验 CSV → PASS/FAIL,
纯 pandas+PyYAML 无重依赖,退出码可做 CI 门。
- **漂移 / 访问分级 / 元数据 / 派生集**:`drift_check`(KS+PSI,PSI 为主 p 为辅)/ `check_access_level`(raw 数据流向
public 被阻断)/ `croissant_export`(出 Croissant JSON-LD 元数据)/ `derive_eval_set`(research-plan 回边的派生评测集)。
### ASK — 停下问用户,给「证据 + 推荐 + 备选」(决策点 🧑)
| 决策点 | 何时 | 你怎么问 |
|---|---|---|
| **数据可行性 2⊣3 回炉**(最重要) | `data_feasibility_gate` 判 insufficient(数据 idea-killing 不足) | "「idea X」要的数据**不足以支撑统计功效/研究**(依据:最小类 N<经验下限 / 四问 Q? insufficient)。**建议**回 idea-generation(2⊣3)带『缺口=… + 补法=补采到 M / 改 idea 降数据门槛』。补数据 / 改 idea / 带病推进并记录——**你定**?(押上数月方向,我不替你拍)" |
| **泄漏检出疑似合法** | HIGH 命中但可能是天然重复 / 合法组统计 | "split_leakage 报『目标编码穿越』(feature `f` 在 `c` 各水平≈全量目标均值)——这可能是真穿越,也可能是**合法的组统计特征**。是哪种?(我不替你判数据来源)" |
| **经验阈值松紧** | 样本量偏紧(warn)但用户想推进 | "样本量 EPV=15 偏紧(经验下限 10、较稳 20),不是 power analysis。要按你的效应量做正式功效论证、还是先按偏紧推进并在论文里 hedge?" |
| **候选数据集取舍** | shortlist 在许可/代表性/规模/成本间冲突 | "A 许可清楚但人群偏窄;B 更贴任务但 gated 且 split 不明。建议先抽样 A 并继续核 B 条款;选 A / 申请 B / 改 idea——你定?(downloads/likes 不替你拍科学适配)" |
| **自建 vs 用现成 / 隐私合规** | 需自建数据集 | "这方向有现成数据集吗(OpenML/HF/Kaggle 我可查)?自建涉隐私(人/医疗数据)须脱敏+授权+IRB——要走自建吗?合规须你/法务签字。" |
### NEVER — 绝不 [NON-NEGOTIABLE]
> **这一节是红线,不可协商、不可被"先把数据洗了再说""差不多够了""这点泄漏不影响"绕过。违反任一条 = 严重失职。**
1. **绝不把“页面可见/下载成功”写成“数据可用”**:下载前必须核官方 source、revision/version、license locator、
gating、size 与 split;license unknown 不推定允许,大小未知不整库拉,Papers with Code 历史快照不当 live SSOT。
2. **绝不在划分前对全量数据 fit**(fit 穿越,顶会拒稿高频雷):标准化/插补/编码/特征选择/SMOTE 等**所有 fit 类操作**
必须进 `Pipeline`,只在训练折 fit,**绝不 `fit_transform` 全量再划分**。Kapoor-Narayanan(2207.07048) 8 类泄漏里
"preprocessing/feature-selection on train+test" 就是这条。`safe_split` 已对此做折内 refit 断言。
3. **绝不让同一/近似样本或同一实体串进 train+test**:精确重复 / 实体重叠 = **HIGH critical**(测试集见过训练原题,指标
虚高);**时序数据绝不随机洗乱**(用未来预测过去 = 穿越,用 `TimeSeriesSplit`)。这是 `split_leakage` 的 LEAK-02/SPLIT-02。
4. **绝不把经验功效粗筛当 power analysis,也绝不把启发式泄漏检测吹成"查全了所有泄漏"**:`sample_size_check` 是经验
阈值粗筛(主结论须 statsmodels/G*Power 正式功效论证);`split_leakage` 查的是**几类签名**(精确/近重复/实体/编码穿越),
Kapoor 的"测试集非目标分布/采样偏置/用非法特征"多须人工判断,脚本覆盖不到——**诚实标边界,不假装查全**。
5. **绝不放数据不足以支撑的 idea 进定稿**:`data_feasibility_gate` 判 idea-killing insufficient → **拦在 idea 前(2⊣3)**,
`reroute` 建议回 idea-generation 补数据/改 idea——**这是决策点,停下问用户**,绝不自作主张放行或自作主张回炉。
6. **绝不对验证/测试折做增强或重采样**:数据增强/SMOTE/过采样**只在训练折内做**(先划分再增强),验证/测试保持原始分布,
否则指标虚高。增强后用 `split_leakage` 复查同一原始样本的多个变体没撒进两侧。
7. **绝不让 raw/未脱敏数据流向公开环节,绝不编造数据来源/DOI**:`check_access_level` 守门,raw 流向 paper/figure/
public-repo 被阻断;数据卡来源须可核链接(隐私/许可合规须人工与 research-ethics 复核,脱敏是否到位脚本不替判)。
8. **绝不全自动删 cleanlab 标的"错标"样本**:置信学习给的是**候选**(pred_probs 必须 out-of-sample),找出后**人工裁定
top-K**,删样本要记录并评估对类别分布的影响——cleanlab 定位 + 人裁定,不全自动。
> 自检触发词:当你想说"下载量最高就用 / 网页能下所以能发表 / 先把数据标准化了再划分 / 时序数据 shuffle 一下 /
> 重复行无所谓 / 这点样本应该够了 / 测试集也增强一下凑数 / cleanlab 说错的直接删"——**停**,先逐条对照 NEVER。
---
## 指令流:何时调哪个脚本(引擎已就位,亲手 selftest 到 exit 0,直接调用勿重写)
13 个脚本在 [`scripts/`](scripts/);`split_leakage`/`data_feasibility_gate`/`data_identity_fitness` 接 `_shared`(规范 bootstrap 产 findings),
其余纯 stdlib 或 pandas/numpy/sklearn。Windows 跑前 `set PYTHONUTF8=1`。
### ⓪ 数据身份 + 权限 + 血缘 + split threat + fitness 统一契约(Round 3 必跑)
```bash
python scripts/data_identity_fitness.py --spec data_identity_fitness.json \
--report data_identity_findings.json --json-out data_identity_report.json
```
输入 `light.data_identity_fitness.v1`(模板见 [`templates/data-identity-fitness.example.json`](templates/data-identity-fitness.example.json),故意不完整,直接跑应 exit 1):锁定 `as_of`、`dataset_id/version/source_locator/snapshot_at/raw_sha256`,逐项核 `license/consent/DUA/ethics_review`,登记 `raw→clean→split` 衍生链,统一 `TIME_CROSSOVER/GROUP_OVERLAP/ENTITY_OVERLAP/PREPROCESSING_BEFORE_SPLIT/TARGET_LEAKAGE/NEAR_DUPLICATE/AUGMENTATION_LEAK` threat matrix,并给 `measurement_quality/label_quality/missingness/sample_power/bias/staleness` 适用性裁定。**UNKNOWN 不是 pass**:权限未知、split threat 未排除、stale 无 impact、DERIVED 无血缘、未来 `snapshot_at/created_at/data_valid_at`、存在 blocker 却声明 `FIT` 均 critical fail。`decision=NOT_FIT/UNKNOWN` 本身阻断推进;只有无 blocker 且限制已下沉时,才可 `FIT_WITH_LIMITATIONS`。
### ⓪b 数据发现与下载前 intake(warn-only,不替用户选)
```bash
python scripts/dataset_intake.py --query "breast cancer" --limit 10 --sort downloads \
--report data_candidates.json
python scripts/dataset_intake.py --inspect scikit-learn/breast-cancer-wisconsin
```
输出 `light.data_candidates.v1`,含 `raw_response_sha256` 与 `candidate_manifest_sha256`;缺
license/revision/last_modified/size/split/file tree/card、license 只来自 tag、gated/private 或命中医疗/隐私/人类等
sensitive tags → `review`,API 失败 →
`UNAVAILABLE` exit 2。**它不产 `light.findings.v1`、不进入 STAGE_GATES**;完整闭环见
[`references/data-resource-map.md`](references/data-resource-map.md)。
### ① 数据可行性前置门 → 不足则 2⊣3(拦在 idea 前,本技能 critical 灵魂之一)
```bash
# 规模够不够支撑 idea 所需统计功效(经验粗筛)+ 四问 → critical/warn findings:
python scripts/data_feasibility_gate.py --spec feasibility_spec.json --report feas_findings.json # insufficient → exit 1
# 交总控聚合(stage 2 确认点,critical fail → exit 1 确定性阻断):
python ../light-orchestrator/scripts/run_checkpoint.py --file .light/passport.yaml --stage 2 \
--findings feas_findings.json --write --ts 2026-06-18T11:00
# fail → 根因回炉建议(命中 ROUTES[2],建议 2⊣3:拦在 idea 前,只建议不执行,停下问用户):
python ../light-orchestrator/scripts/reroute.py --findings feas_findings.json --stage 2 \
--passport .light/passport.yaml
# 用户拍板回炉后落账:
python ../light-orchestrator/scripts/passport.py add-back-edge --to 3 --from 2 \
--root-cause "数据不足以支撑 idea 所需统计功效" --evidence-ptr "<reroute 给的指针>"
```
`feasibility_spec.json`:`{project, idea, sample{task,n,classes,features,positives,per_class}, feasibility{sufficiency,
quality,feature_value}}`(scale 缺省由 sample 自动回填)。spec 源自 idea-generation 立项卡的"数据可行性必答字段"。
### ② 数据泄漏 critical 门(本技能 critical 灵魂之二)
```bash
# 四类泄漏审计 → leak_findings.json(HIGH=critical):
python scripts/split_leakage.py --train train.csv --test test.csv --group-col user_id --target y \
--out leak_audit.md --findings leak_findings.json # 任一 HIGH → exit 1
# 单文件带 split 列:--csv data.csv --split-col split
# 交总控聚合(critical fail → exit 1 阻断;泄漏在 stage 2 内修复,非跨阶段回边):
python ../light-orchestrator/scripts/run_checkpoint.py --file .light/passport.yaml --stage 2 \
--findings leak_findings.json --write --ts 2026-06-18T11:30
```
### ③ 防泄漏划分 / 质量门 / 体检 / 漂移(被编排,也可单独跑)
```bash
python scripts/data_doctor.py --csv data.csv --target y --out report.md # 体检画像(先做)
python scripts/safe_split.py --csv data.csv --target y --task group --group-col user_id --group-clf # Pipeline+CV 折内 refit
python scripts/quality_gate.py --csv data.csv --rules rules.yaml --out gate.md # YAML 数据门禁(CI)
python scripts/sample_size_check.py --task clf --n 1200 --classes 3 --features 20 # 经验功效粗筛(非 power analysis)
python scripts/data_feasibility.py --project X --q1 ok:... --scale-json size.json --q4 ok:... --out data_feasibility.md
python scripts/drift_check.py --ref train.csv --cur test.csv --out drift.md # KS+PSI(PSI 为主 p 为辅)
python scripts/check_access_level.py --level raw --sink paper # raw→public 阻断
python scripts/croissant_export.py --in card_fields.json --out ds.croissant.json # Croissant 元数据
python scripts/derive_eval_set.py --base data.csv --spec derive_spec.json --outdir derived/ # research-plan 回边
```
各脚本 `--selftest`/`--help` 即接口;资源闭环见 [`data-resource-map.md`](references/data-resource-map.md),
逐工具 API/已知坑见 [`references.md`](references.md)。
---
## 院士级深挖:四条是及格线(蓝图 §4.3-2,不是加分项)
### ① 数据可行性前置(很多 idea 死在数据根本不够/不可得/质量差)
提 idea **之前**先问四问:这 idea 要什么数据?**规模/质量/标注够不够支撑统计显著**?`sample_size_check` 给经验粗筛
(分类每类 ≥50 偏紧/≥100 较稳;回归 EPV 样本/特征 ≥10/≥20;二分类正例 EPV,Peduzzi 1996),`data_feasibility` 四问取
最差档。**数据 idea-killing 不足 = critical 前置门**,`reroute` 建议 **2⊣3**(拦在 idea 前,补数据/改 idea)——别让一个
数据撑不起的 idea 押上数月。
### ② 数据泄漏前置查(顶会拒稿高频雷,critical 一票否决)
Kapoor-Narayanan(Patterns 2023, 2207.07048) survey 出 **17 个领域 329 篇论文**因泄漏结论过度乐观,给 **8 类泄漏**。
本技能查可机检的几类(对标 Deepchecks `TrainTestSamplesMix`/`DateTrainTestLeakage*`/`IndexTrainTestLeakage`):
- **标准化/预处理早于划分**(fit 穿越)→ `safe_split` 折内 refit 杜绝。
- **时序穿越**(用未来预测过去)→ `TimeSeriesSplit` + `--time-col` 升序校验。
- **train-test 实体重叠**(同一用户/患者/牧场跨 split)→ `split_leakage --group-col`,`GroupKFold` 防。
- **目标编码穿越**(目标均值编码用了含 test 的全量)→ `split_leakage --target` 查签名。
**任一 HIGH→critical→exit 1**。这是 stage 2 的 STAGE_GATES(leakage)。
### ③ 数据的可挖掘价值判断(有没有可做文章的结构/规律)
`data_doctor` 画像 + 四问 Q4:特征-目标关系是否真实(非 ID-like 误用、非目标泄漏)、有没有可建模的结构。data-centric
视角(DataPerf):改数据有时胜过堆模型。**这是定性判断 + 画像启发,不是可比分数**。
### ④ 自建数据集(标注规范 / 隐私合规 / 可发布性 / 许可)
`templates/annotation_guide.md`(类目定义/边界规则/LLM 辅助+人工审核闭环/质检抽样率/IAA)+ `assets/data_card_template.md`
(对齐 Datasheets for Datasets / HF Dataset Card / Croissant:动机/构成/采集/标注/用途/分发/维护 + 偏差·隐私·访问分级·溯源)。
标注质量:IAA(sklearn `cohen_kappa_score` / statsmodels `fleiss_kappa`)评流程整体 + cleanlab 置信学习定位具体可疑样本
(**人裁定 top-K 不全自动删**)。隐私/许可合规须人工与 research-ethics 复核。
---
## 收尾 self-check(出 verdict 前 / 回写总控前过一遍)
- [ ] 候选数据的 **source/revision/license locator/gating/size/split/file tree/last_modified** 当天核了吗?
`dataset_intake` 报告有 `raw_response_sha256` 与 `candidate_manifest_sha256` 吗?抽样前记 URL,整库前记 SHA256 了吗?
- [ ] 跑过 `data_identity_fitness.py` 吗?数据身份、权限链、衍生链、split threat matrix、fitness 与 staleness 都有 locator/hash/impact 吗?
- [ ] `as_of`、`snapshot_at`、split `created_at`、`data_valid_at` 是真实核验/冻结时间吗?没有预填未来日期吧?
- [ ] 没拿 downloads/likes/usability 代替任务匹配与代表性判断吧?受限或 license unknown 的如实写 `review/unresolved` 吧?
- [ ] raw→clean 的 hash、变换脚本/commit、行映射与 split scheme/seed/group/time 留全了吗?
- [ ] DERIVED 数据有每步 input/output SHA256、transform locator、commit 吗?权限 UNKNOWN/RESTRICTED/PROHIBITED 没被写成“可用”吧?
- [ ] 提 idea 前判了**数据可行性**吗?数据 idea-killing 不足的,**停下用 ASK 问用户** 2⊣3 回炉决策了吗?(没自作主张放行/回炉)
- [ ] 所有 fit 类预处理都进 `Pipeline` **只训练折 fit** 了吗?没在划分前 `fit_transform` 全量吧?
- [ ] 时序数据用 `TimeSeriesSplit` 没洗乱吧?重复个体用 `GroupKFold` 防实体重叠了吗?
- [ ] 跑 `split_leakage` 查了**四类泄漏**吗?HIGH 命中是真污染还是疑似合法(停下问用户)?
- [ ] 没把经验功效粗筛当 **power analysis**、没把启发式泄漏检测吹成 **"查全了"** 吧?(诚实标边界)
- [ ] 增强/重采样**只在训练折**做了吗?没污染验证/测试折吧?
- [ ] raw/未脱敏数据没流向公开环节吧(`check_access_level`)?数据来源可核、没编造 DOI 吧?
- [ ] cleanlab 标的"错标"是**人裁定 top-K**、没全自动删吧?
---
## 名实对齐(诚实,不吹成卖点)
**真增量(v2 兑现,已 selftest)**:⓪ **数据身份/权限/血缘/split threat/fitness 统一契约**(`data_identity_fitness.py`,Round 3 新增)——产 `light.findings.v1`,把 license/consent/DUA/ethics、raw SHA256、衍生链、split threat matrix、staleness impact 与 `FIT/FIT_WITH_LIMITATIONS/NOT_FIT/UNKNOWN` 对齐;UNKNOWN/禁止/未排除威胁、未来时间、`NOT_FIT/UNKNOWN` 裁定不会被冒充 pass。① **数据候选下载前 intake**(`dataset_intake.py`,Round 2 新增/Round 3 续补)——HF 公开 API
元数据归一为 `light.data_candidates.v1`,核 access/license/revision/last_modified/size/split/file tree/card,记录
`raw_response_sha256` 与 `candidate_manifest_sha256`;缺项、tag-only license、敏感标签或 gated/private 诚实 `review`,不冒充 usable、
不扩大 critical 面。② **数据泄漏 critical 门 producer**(`split_leakage.py` 港 v1,**v2 修硬编码
`../../_shared`→规范 bootstrap** + producer `m02`→`data-engineering`)——四类泄漏 → `leak_findings.json`(`light.findings.v1`,
HIGH=critical),被 `run_checkpoint --stage 2` 聚合 **exit 1**;输出名正是 `STAGE_GATES[2]` 引用的标准件。③ **数据可行性
前置 critical 门 producer**(`data_feasibility_gate.py`,**v2 净新增接线**)——编排港来的 `sample_size_check`+`data_feasibility`
(v1 纯工具、零接 `_shared`,grep 实证)产 critical/warn findings,insufficient → `reroute` 命中 `ROUTES[2]` 建议 **2⊣3**
(拦在 idea 前)。④ **防 fit 穿越的 Pipeline+CV**(`safe_split` 折内 refit 断言)。⑤ **零重依赖数据门**(quality_gate 是
GX 哲学的轻量同构,纯 pandas+PyYAML)。
**裸模型本就会的(不吹)**:"数据要先划分再标准化""注意别泄漏""样本量要够""数据集要写卡"——裸 Opus 都会。本技能价值 =
① **把防泄漏落成确定性机读门 + 折内 refit 断言**(裸模型会嘴上说不泄漏、手上还是全量 fit);② **数据可行性前置于 idea
定稿 + 2⊣3 回边**(裸模型不会"拦在 idea 前"喂回 idea 阶段);③ **机读 critical findings + 确定性阻断 + 根因回炉**
(裸模型给口头结论,编排器读不了、阻断不了)。
**诚实落后项(已知没做到)**:
1. **自动发现目前只接 HF 公共元数据**:OpenML/UCI/Zenodo/Kaggle 走资源地图 + harness 联网;`metadata-ready` 只表示字段
较齐,不表示任务适配、许可终判、无隐私/无泄漏。HF API 失败时 exit 2 + UNAVAILABLE,不用旧缓存冒充当天真值。
2. **泄漏检测是启发式、有边界**:`split_leakage` 查几类**签名**(精确/近重复/实体/目标编码穿越),**≠"查全了所有泄漏"**;
近重复靠分箱指纹(**巧合会误报**,标 MED 需人工);目标编码穿越的"**合法组统计**"也可能命中(须人工核来源)。Kapoor 的
"测试集非目标分布/采样偏置/用非法特征"多须人工判断,脚本覆盖不到。
3. **统计功效是经验阈值,非 power analysis**:`sample_size_check` 是领域经验下限粗筛(每类样本/EPV/检测实例),**不替代**
效应量+显著性+功效的正式论证(statsmodels/G*Power)。阈值经验默认、可调。
4. **可行性四问档位是人/脚本判定、非自动真值**:`data_feasibility_gate` 只**聚合判据 + 出 findings**,不替你判"数据到底
够不够"——GIGO(输入的四问/规模参数错,结论就错)。
5. **不跑置信学习/不内置 cleanlab、不做 EDA 全家桶**:标注质量靠规范+IAA+(外部)cleanlab;`data_doctor` 是粗筛画像非完整
EDA;漂移/质量门用轻量自写实现(drift_check 纯 numpy 渐近 p、quality_gate 无 GX 重依赖),表达力不及 Deepchecks/GX/
ydata-profiling,重场景仍建议用专业库(references 有真实端点)。
6. **隐私/许可合规不替判 + 不做完整 Croissant/datasheet 校验**:`check_access_level` 按声明判流向(真脱敏须人工+research-ethics);
`croissant_export` 出关键层(完整 spec 校验/Hub 上传留外部工具)。
7. **v1 资产取舍(诚实)**:港 split_leakage/safe_split/sample_size_check/data_feasibility/quality_gate/data_doctor/
drift_check/check_access_level/croissant_export/derive_eval_set;**`emit_artifacts.py` 未港**——其"标准工件名 + passport
登记"在 v2 归 memory-pm `pm.py` / orchestrator `passport.py append-stage`,不重造(标准工件名约定见本 SKILL「产出」)。
v1 的 `code_assets/` 共享统计库(stats_tests/agreement)v2 未港,统计/κ 用 statsmodels/sklearn 直接做。
> 标准产出工件:`data_feasibility.md`(交 idea-generation/idea-critique,前置 2⊣3)· `leak_findings.json`(泄漏 critical 门)·
> `quality_report.md` / `data_card.md`(交 research-plan/experiment-coding 做实验)。落 `.light/`,passport 登记交 memory-pm。
---
## 参考(三级渐进披露:需要时再读)
- 对标真相源:[`docs/competitors/data-engineering.md`](../../docs/competitors/data-engineering.md)(11 个同类一手核 + 横切可借 + 超越点 + 诚实边界)
- 真实用户资源工作流:[`references/data-resource-map.md`](references/data-resource-map.md)(需求卡→多源发现→preflight→抽样→血缘→门→发布;access 分级)
- 工具一手核查笔记(真实端点/API/参数/已知坑):[`references.md`](references.md)(pandas/polars/DuckDB/Deepchecks/GX/ydata-profiling/cleanlab/OpenML/HF/Kaggle/数据增强 等)
- 引擎脚本:[`scripts/`](scripts/)——各 `--selftest`/`--help` 即接口;`split_leakage.py`(泄漏 critical 门)· `data_feasibility_gate.py`(可行性 critical 门 + 2⊣3)是 findings 核心
- 模板/案例:[`assets/data_card_template.md`](assets/data_card_template.md)(datasheet)· [`templates/annotation_guide.md`](templates/annotation_guide.md)(标注规范+IAA)· [`examples/worked_example.md`](examples/worked_example.md)(山羊行为数据走查)· [`examples/rules.example.yaml`](examples/rules.example.yaml) · [`examples/derive_spec.example.json`](examples/derive_spec.example.json)
- 地基契约:[`_shared/README.md`](../../_shared/README.md)(`findings_schema` · `gate_runner` · 规范 bootstrap)
- 上游/下游:[`light-idea-generation`](../light-idea-generation/)(stage 3,立项卡"数据可行性必答字段",2⊣3 前置回边)· [`light-orchestrator/scripts/run_checkpoint.py`](../light-orchestrator/scripts/run_checkpoint.py)(stage 2 聚合 critical fail→exit 1)· [`reroute.py`](../light-orchestrator/scripts/reroute.py)(ROUTES[2] 建议 2⊣3)· research-plan(stage 5,派生评测集回边)
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!