scikit-rank 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- scikit_rank-0.1.0/.editorconfig +19 -0
- scikit_rank-0.1.0/.gitignore +22 -0
- scikit_rank-0.1.0/.pi-subagents/artifacts/8682734e-5509-4c5e-850d-a0a13f741c27_scout_input.md +60 -0
- scikit_rank-0.1.0/.pi-subagents/artifacts/8682734e-5509-4c5e-850d-a0a13f741c27_scout_meta.json +28 -0
- scikit_rank-0.1.0/.pi-subagents/artifacts/8682734e-5509-4c5e-850d-a0a13f741c27_scout_output.md +59 -0
- scikit_rank-0.1.0/.pi-subagents/artifacts/8682734e-5509-4c5e-850d-a0a13f741c27_scout_transcript.jsonl +81 -0
- scikit_rank-0.1.0/.pi-subagents/artifacts/90504977-7ccf-44a0-8cb3-5a61c5a8bbf1_reviewer_input.md +54 -0
- scikit_rank-0.1.0/.pi-subagents/artifacts/90504977-7ccf-44a0-8cb3-5a61c5a8bbf1_reviewer_meta.json +29 -0
- scikit_rank-0.1.0/.pi-subagents/artifacts/90504977-7ccf-44a0-8cb3-5a61c5a8bbf1_reviewer_output.md +0 -0
- scikit_rank-0.1.0/.pi-subagents/artifacts/90504977-7ccf-44a0-8cb3-5a61c5a8bbf1_reviewer_transcript.jsonl +28 -0
- scikit_rank-0.1.0/.pi-subagents/artifacts/d1e0cf29-668a-4f19-99b6-0624bb51285a_reviewer_1_input.md +62 -0
- scikit_rank-0.1.0/.pi-subagents/artifacts/d1e0cf29-668a-4f19-99b6-0624bb51285a_reviewer_1_meta.json +29 -0
- scikit_rank-0.1.0/.pi-subagents/artifacts/d1e0cf29-668a-4f19-99b6-0624bb51285a_reviewer_1_output.md +1 -0
- scikit_rank-0.1.0/.pi-subagents/artifacts/d1e0cf29-668a-4f19-99b6-0624bb51285a_reviewer_1_transcript.jsonl +128 -0
- scikit_rank-0.1.0/.pi-subagents/artifacts/d1e0cf29-668a-4f19-99b6-0624bb51285a_scout_0_input.md +60 -0
- scikit_rank-0.1.0/.pi-subagents/artifacts/d1e0cf29-668a-4f19-99b6-0624bb51285a_scout_0_meta.json +28 -0
- scikit_rank-0.1.0/.pi-subagents/artifacts/d1e0cf29-668a-4f19-99b6-0624bb51285a_scout_0_output.md +234 -0
- scikit_rank-0.1.0/.pi-subagents/artifacts/d1e0cf29-668a-4f19-99b6-0624bb51285a_scout_0_transcript.jsonl +95 -0
- scikit_rank-0.1.0/.pi-subagents/artifacts/outputs/8682734e-5509-4c5e-850d-a0a13f741c27/audit-scout.md +59 -0
- scikit_rank-0.1.0/.pi-subagents/artifacts/outputs/d1e0cf29-668a-4f19-99b6-0624bb51285a/tmp/demo-api-recon.md +234 -0
- scikit_rank-0.1.0/.pre-commit-config.yaml +29 -0
- scikit_rank-0.1.0/.python-version +1 -0
- scikit_rank-0.1.0/LICENSE +201 -0
- scikit_rank-0.1.0/PKG-INFO +210 -0
- scikit_rank-0.1.0/README.md +189 -0
- scikit_rank-0.1.0/demo.ipynb +839 -0
- scikit_rank-0.1.0/devenv.lock +157 -0
- scikit_rank-0.1.0/devenv.nix +35 -0
- scikit_rank-0.1.0/devenv.yaml +13 -0
- scikit_rank-0.1.0/exps/README.md +115 -0
- scikit_rank-0.1.0/exps/bars/README.md +168 -0
- scikit_rank-0.1.0/exps/bars/_adapters.py +358 -0
- scikit_rank-0.1.0/exps/bars/_data.py +125 -0
- scikit_rank-0.1.0/exps/bars/_datasets.py +38 -0
- scikit_rank-0.1.0/exps/bars/_reporting.py +110 -0
- scikit_rank-0.1.0/exps/bars/configs/config_catboost_avazu_x1.yaml +31 -0
- scikit_rank-0.1.0/exps/bars/configs/config_catboost_criteo_x1.yaml +31 -0
- scikit_rank-0.1.0/exps/bars/configs/config_dcn_avazu_x1.yaml +32 -0
- scikit_rank-0.1.0/exps/bars/configs/config_dcn_avazu_x1_multihash.yaml +34 -0
- scikit_rank-0.1.0/exps/bars/configs/config_dcn_criteo_x1.yaml +33 -0
- scikit_rank-0.1.0/exps/bars/configs/config_dcn_criteo_x1_num_encoding.yaml +34 -0
- scikit_rank-0.1.0/exps/bars/configs/config_lgbm_avazu_x1.yaml +30 -0
- scikit_rank-0.1.0/exps/bars/configs/config_lgbm_criteo_x1.yaml +30 -0
- scikit_rank-0.1.0/exps/bars/configs/config_xgboost_avazu_x1.yaml +32 -0
- scikit_rank-0.1.0/exps/bars/configs/config_xgboost_criteo_x1.yaml +32 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/bars_parity/seed-190034/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/bars_parity/seed-2021/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/bars_parity/seed-27011/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/bars_parity/seed-948432/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/bars_parity/seed-992817/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/cat_encoding/seed-190034/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/cat_encoding/seed-2021/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/cat_encoding/seed-27011/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/cat_encoding/seed-948432/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/cat_encoding/seed-992817/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/catboost/seed-190034/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/catboost/seed-2021/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/catboost/seed-27011/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/catboost/seed-948432/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/catboost/seed-992817/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/lgbm/seed-190034/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/lgbm/seed-2021/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/lgbm/seed-27011/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/lgbm/seed-948432/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/lgbm/seed-992817/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/xgboost/seed-190034/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/xgboost/seed-2021/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/xgboost/seed-27011/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/xgboost/seed-948432/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/avazu_x1/xgboost/seed-992817/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/bars_parity/seed-190034/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/bars_parity/seed-2021/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/bars_parity/seed-27011/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/bars_parity/seed-948432/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/bars_parity/seed-992817/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/catboost/seed-190034/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/catboost/seed-2021/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/catboost/seed-27011/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/catboost/seed-948432/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/catboost/seed-992817/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/lgbm/seed-190034/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/lgbm/seed-2021/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/lgbm/seed-27011/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/lgbm/seed-948432/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/lgbm/seed-992817/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/num_encoding/seed-190034/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/num_encoding/seed-2021/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/num_encoding/seed-27011/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/num_encoding/seed-948432/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/num_encoding/seed-992817/metrics.json +6 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/xgboost/seed-190034/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/xgboost/seed-2021/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/xgboost/seed-27011/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/xgboost/seed-948432/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/results/criteo_x1/xgboost/seed-992817/metrics.json +7 -0
- scikit_rank-0.1.0/exps/bars/train.py +208 -0
- scikit_rank-0.1.0/exps/scripts/compare_auc_delong_xu.py +127 -0
- scikit_rank-0.1.0/exps/scripts/compare_predictions_auc.py +102 -0
- scikit_rank-0.1.0/exps/scripts/evaluate_ranking.py +177 -0
- scikit_rank-0.1.0/exps/scripts/mind_to_parquet.py +236 -0
- scikit_rank-0.1.0/exps/scripts/summarize_metrics.py +77 -0
- scikit_rank-0.1.0/exps/scripts/temporal_split.py +223 -0
- scikit_rank-0.1.0/exps/scripts/train_temporal_dcn.py +714 -0
- scikit_rank-0.1.0/exps/scripts/train_temporal_fuxictr.py +475 -0
- scikit_rank-0.1.0/exps/scripts/train_temporal_tabular.py +986 -0
- scikit_rank-0.1.0/exps/temporal_article/README.md +140 -0
- scikit_rank-0.1.0/exps/temporal_article/final_metrics.json +110 -0
- scikit_rank-0.1.0/exps/temporal_article/run_final.sh +141 -0
- scikit_rank-0.1.0/exps/vendor/fuxictr_v2_3_9/DCNv2.py +102 -0
- scikit_rank-0.1.0/exps/vendor/fuxictr_v2_3_9/README.md +13 -0
- scikit_rank-0.1.0/pyproject.toml +112 -0
- scikit_rank-0.1.0/src/scikit_rank/__init__.py +50 -0
- scikit_rank-0.1.0/src/scikit_rank/data.py +416 -0
- scikit_rank-0.1.0/src/scikit_rank/factories.py +490 -0
- scikit_rank-0.1.0/src/scikit_rank/modules/__init__.py +6 -0
- scikit_rank-0.1.0/src/scikit_rank/modules/dcn.py +843 -0
- scikit_rank-0.1.0/src/scikit_rank/modules/losses.py +1450 -0
- scikit_rank-0.1.0/src/scikit_rank/modules/reducers.py +64 -0
- scikit_rank-0.1.0/src/scikit_rank/preprocessing.py +537 -0
- scikit_rank-0.1.0/src/scikit_rank/run.py +379 -0
- scikit_rank-0.1.0/src/scikit_rank/sklearn/__init__.py +25 -0
- scikit_rank-0.1.0/src/scikit_rank/sklearn/_data_router.py +257 -0
- scikit_rank-0.1.0/src/scikit_rank/sklearn/_input_validation.py +93 -0
- scikit_rank-0.1.0/src/scikit_rank/sklearn/_types.py +24 -0
- scikit_rank-0.1.0/src/scikit_rank/sklearn/estimator.py +861 -0
- scikit_rank-0.1.0/src/scikit_rank/train/__init__.py +24 -0
- scikit_rank-0.1.0/src/scikit_rank/train/optimizers.py +436 -0
- scikit_rank-0.1.0/src/scikit_rank/train/options.py +380 -0
- scikit_rank-0.1.0/src/scikit_rank/train/trainer.py +186 -0
- scikit_rank-0.1.0/src/scikit_rank/utils/__init__.py +14 -0
- scikit_rank-0.1.0/src/scikit_rank/utils/ipc_materializer.py +88 -0
- scikit_rank-0.1.0/src/scikit_rank/utils/module_parser.py +125 -0
- scikit_rank-0.1.0/tests/__init__.py +1 -0
- scikit_rank-0.1.0/tests/conftest.py +20 -0
- scikit_rank-0.1.0/tests/test_accelerate_multiworker.py +147 -0
- scikit_rank-0.1.0/tests/test_data_router.py +202 -0
- scikit_rank-0.1.0/tests/test_dcn_features.py +332 -0
- scikit_rank-0.1.0/tests/test_ddp_loss_reduce.py +180 -0
- scikit_rank-0.1.0/tests/test_ddp_metric_gather.py +318 -0
- scikit_rank-0.1.0/tests/test_ddp_ranking_training.py +185 -0
- scikit_rank-0.1.0/tests/test_ddp_sharding.py +283 -0
- scikit_rank-0.1.0/tests/test_ema.py +158 -0
- scikit_rank-0.1.0/tests/test_embedding_features.py +123 -0
- scikit_rank-0.1.0/tests/test_encoder_specs.py +255 -0
- scikit_rank-0.1.0/tests/test_estimator_specs.py +79 -0
- scikit_rank-0.1.0/tests/test_extra_layers.py +117 -0
- scikit_rank-0.1.0/tests/test_group_batch_sampler.py +181 -0
- scikit_rank-0.1.0/tests/test_inner_cross_layers.py +128 -0
- scikit_rank-0.1.0/tests/test_lazy_arrow_source.py +94 -0
- scikit_rank-0.1.0/tests/test_lazy_dataframe_support.py +117 -0
- scikit_rank-0.1.0/tests/test_lazy_eager_parity.py +88 -0
- scikit_rank-0.1.0/tests/test_loss_model_alignment.py +123 -0
- scikit_rank-0.1.0/tests/test_multihash_features.py +169 -0
- scikit_rank-0.1.0/tests/test_optimizers.py +155 -0
- scikit_rank-0.1.0/tests/test_ple_encoder.py +117 -0
- scikit_rank-0.1.0/tests/test_quantile_normalize.py +160 -0
- scikit_rank-0.1.0/tests/test_ranker_eval_metrics.py +90 -0
- scikit_rank-0.1.0/tests/test_sklearn_compliance.py +54 -0
- scikit_rank-0.1.0/uv.lock +2473 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
root = true
|
|
2
|
+
|
|
3
|
+
[*]
|
|
4
|
+
charset = utf-8
|
|
5
|
+
indent_style = space
|
|
6
|
+
indent_size = 4
|
|
7
|
+
end_of_line = lf
|
|
8
|
+
insert_final_newline = true
|
|
9
|
+
trim_trailing_whitespace = true
|
|
10
|
+
|
|
11
|
+
[*.{py,jsonnet,json,md}]
|
|
12
|
+
indent_size = 4
|
|
13
|
+
|
|
14
|
+
[*.{yml,yaml}]
|
|
15
|
+
indent_size = 2
|
|
16
|
+
|
|
17
|
+
[{Makefile,*.Dockerfile}]
|
|
18
|
+
indent_style = tab
|
|
19
|
+
tab_width = 4
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Python-generated files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[oc]
|
|
4
|
+
build/
|
|
5
|
+
dist/
|
|
6
|
+
wheels/
|
|
7
|
+
*.egg-info
|
|
8
|
+
.ipynb_checkpoints/
|
|
9
|
+
|
|
10
|
+
# Virtual environments
|
|
11
|
+
.venv
|
|
12
|
+
|
|
13
|
+
# Devenv
|
|
14
|
+
.devenv*
|
|
15
|
+
devenv.local.nix
|
|
16
|
+
devenv.local.yaml
|
|
17
|
+
|
|
18
|
+
# Direnv
|
|
19
|
+
.direnv
|
|
20
|
+
|
|
21
|
+
# Ouptuts
|
|
22
|
+
data
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Task for scout
|
|
2
|
+
|
|
3
|
+
Audit this repository for the requested cleanup/refactor. Identify package/module layout, build/test/docs configuration, every reference to scikit-rank/current package name and forbidden names beeformer/dcn-exps/tabicl (excluding ipynb), and recommend low-value tests to remove versus keep. Do not edit files. Report concise file paths and commands.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
**Output:**
|
|
7
|
+
Write your findings to exactly this path: /Users/a.n.milogradskiy/Developer/personal/scikit-rank/.pi-subagents/artifacts/outputs/8682734e-5509-4c5e-850d-a0a13f741c27/audit-scout.md
|
|
8
|
+
This path is authoritative for this run.
|
|
9
|
+
Ignore any other output filename or output path mentioned elsewhere, including output destinations in the base agent prompt, system prompt, or task instructions.
|
|
10
|
+
|
|
11
|
+
## Acceptance Contract
|
|
12
|
+
Acceptance level: reviewed
|
|
13
|
+
Completion is not accepted from prose alone. End with a structured acceptance report.
|
|
14
|
+
|
|
15
|
+
Criteria:
|
|
16
|
+
- criterion-1: Implement the requested change without widening scope
|
|
17
|
+
- criterion-2: Return evidence sufficient for an independent acceptance review
|
|
18
|
+
|
|
19
|
+
Required evidence: changed-files, tests-added, commands-run, validation-output, residual-risks, no-staged-files
|
|
20
|
+
|
|
21
|
+
Review gate: required by reviewer.
|
|
22
|
+
|
|
23
|
+
Finish with a fenced JSON block tagged `acceptance-report` in this shape:
|
|
24
|
+
Use empty arrays when no items apply; array fields contain strings unless object entries are shown.
|
|
25
|
+
```acceptance-report
|
|
26
|
+
{
|
|
27
|
+
"criteriaSatisfied": [
|
|
28
|
+
{
|
|
29
|
+
"id": "criterion-1",
|
|
30
|
+
"status": "satisfied",
|
|
31
|
+
"evidence": "specific proof"
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"changedFiles": [
|
|
35
|
+
"src/file.ts"
|
|
36
|
+
],
|
|
37
|
+
"testsAddedOrUpdated": [
|
|
38
|
+
"test/file.test.ts"
|
|
39
|
+
],
|
|
40
|
+
"commandsRun": [
|
|
41
|
+
{
|
|
42
|
+
"command": "command",
|
|
43
|
+
"result": "passed",
|
|
44
|
+
"summary": "short result"
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"validationOutput": [
|
|
48
|
+
"validation output or concise summary"
|
|
49
|
+
],
|
|
50
|
+
"residualRisks": [
|
|
51
|
+
"none"
|
|
52
|
+
],
|
|
53
|
+
"noStagedFiles": true,
|
|
54
|
+
"diffSummary": "short description of the diff",
|
|
55
|
+
"reviewFindings": [
|
|
56
|
+
"blocker: file.ts:12 - issue found, or no blockers"
|
|
57
|
+
],
|
|
58
|
+
"manualNotes": "anything else the parent should know"
|
|
59
|
+
}
|
|
60
|
+
```
|
scikit_rank-0.1.0/.pi-subagents/artifacts/8682734e-5509-4c5e-850d-a0a13f741c27_scout_meta.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"runId": "8682734e-5509-4c5e-850d-a0a13f741c27",
|
|
3
|
+
"agent": "scout",
|
|
4
|
+
"task": "Audit this repository for the requested cleanup/refactor. Identify package/module layout, build/test/docs configuration, every reference to scikit-rank/current package name and forbidden names beeformer/dcn-exps/tabicl (excluding ipynb), and recommend low-value tests to remove versus keep. Do not edit files. Report concise file paths and commands.\n\n---\n**Output:**\nWrite your findings to exactly this path: /Users/a.n.milogradskiy/Developer/personal/scikit-rank/.pi-subagents/artifacts/outputs/8682734e-5509-4c5e-850d-a0a13f741c27/audit-scout.md\nThis path is authoritative for this run.\nIgnore any other output filename or output path mentioned elsewhere, including output destinations in the base agent prompt, system prompt, or task instructions.\n\n## Acceptance Contract\nAcceptance level: reviewed\nCompletion is not accepted from prose alone. End with a structured acceptance report.\n\nCriteria:\n- criterion-1: Implement the requested change without widening scope\n- criterion-2: Return evidence sufficient for an independent acceptance review\n\nRequired evidence: changed-files, tests-added, commands-run, validation-output, residual-risks, no-staged-files\n\nReview gate: required by reviewer.\n\nFinish with a fenced JSON block tagged `acceptance-report` in this shape:\nUse empty arrays when no items apply; array fields contain strings unless object entries are shown.\n```acceptance-report\n{\n \"criteriaSatisfied\": [\n {\n \"id\": \"criterion-1\",\n \"status\": \"satisfied\",\n \"evidence\": \"specific proof\"\n }\n ],\n \"changedFiles\": [\n \"src/file.ts\"\n ],\n \"testsAddedOrUpdated\": [\n \"test/file.test.ts\"\n ],\n \"commandsRun\": [\n {\n \"command\": \"command\",\n \"result\": \"passed\",\n \"summary\": \"short result\"\n }\n ],\n \"validationOutput\": [\n \"validation output or concise summary\"\n ],\n \"residualRisks\": [\n \"none\"\n ],\n \"noStagedFiles\": true,\n \"diffSummary\": \"short description of the diff\",\n \"reviewFindings\": [\n \"blocker: file.ts:12 - issue found, or no blockers\"\n ],\n \"manualNotes\": \"anything else the parent should know\"\n}\n```",
|
|
5
|
+
"exitCode": 0,
|
|
6
|
+
"model": "openai-codex/gpt-5.6-terra:low",
|
|
7
|
+
"attemptedModels": [
|
|
8
|
+
"openai-codex/gpt-5.6-terra:low"
|
|
9
|
+
],
|
|
10
|
+
"modelAttempts": [
|
|
11
|
+
{
|
|
12
|
+
"model": "openai-codex/gpt-5.6-terra:low",
|
|
13
|
+
"success": true,
|
|
14
|
+
"exitCode": 0,
|
|
15
|
+
"usage": {
|
|
16
|
+
"input": 64973,
|
|
17
|
+
"output": 9106,
|
|
18
|
+
"cacheRead": 388608,
|
|
19
|
+
"cacheWrite": 0,
|
|
20
|
+
"cost": 0.3961745,
|
|
21
|
+
"turns": 10
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"transcriptPath": "/Users/a.n.milogradskiy/Developer/personal/scikit-rank/.pi-subagents/artifacts/8682734e-5509-4c5e-850d-a0a13f741c27_scout_transcript.jsonl",
|
|
26
|
+
"skills": [],
|
|
27
|
+
"timestamp": 1784053453342
|
|
28
|
+
}
|
scikit_rank-0.1.0/.pi-subagents/artifacts/8682734e-5509-4c5e-850d-a0a13f741c27_scout_output.md
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Code Context
|
|
2
|
+
|
|
3
|
+
## Files Retrieved
|
|
4
|
+
1. `pyproject.toml` (lines 1-112) — package name, Hatch target, deps, Ruff.
|
|
5
|
+
2. `README.md` (lines 1-189) — primary docs; install/test/lint commands.
|
|
6
|
+
3. `src/scikit_rank/__init__.py` (lines 1-53) — public API exports.
|
|
7
|
+
4. `src/scikit_rank/sklearn/estimator.py` (lines 1-900) — `DCNBase`, classifier, regressor, ranker.
|
|
8
|
+
5. `src/scikit_rank/{data.py,preprocessing.py,run.py,factories.py}`, `modules/`, `train/`, `utils/`, `sklearn/` — implementation.
|
|
9
|
+
6. `tests/conftest.py` (lines 1-19), `tests/test_*.py` — 24 tests / 3,855 LOC.
|
|
10
|
+
7. `.pre-commit-config.yaml` (lines 1-29), `devenv.nix` (lines 1-35), `devenv.yaml`, `uv.lock:2093` — tooling/lock.
|
|
11
|
+
8. `exps/{README.md,bars/README.md,temporal_article/README.md}` — experiment docs.
|
|
12
|
+
|
|
13
|
+
## Key Code
|
|
14
|
+
Distribution is `scikit-rank` (`pyproject.toml:2`); source/import package is `scikit_rank` (`pyproject.toml:48`). Hatch builds only `src/scikit_rank`. Public flow is `__init__` → sklearn estimator → `DataRouter`/`TabularPreprocessor` → factories/`TrainingRun` → `Trainer`; `modules/` holds DCNv2/losses/reducers.
|
|
15
|
+
|
|
16
|
+
A rename must update both forms, the lockfile, Hatch/Ruff config, docs/scripts/tests/docstrings, IPC prefix at `src/scikit_rank/data.py:376`, and temporary router columns at `src/scikit_rank/sklearn/_data_router.py:40-41` if internal residue is forbidden. `exps/bars/` is separate config-driven benchmark infrastructure; untracked `exps/temporal_article/run_final.sh` and FuxiCTR vendor files are not committed scope.
|
|
17
|
+
|
|
18
|
+
## Architecture
|
|
19
|
+
sklearn wrappers share preprocessing, factory-built PyTorch DCNv2, and Accelerate/Ignite training. `DataRouter` supports eager and LazyFrame input; lazy data streams through Arrow IPC. Experiments are separate from the installable package.
|
|
20
|
+
|
|
21
|
+
## Build/Test/Docs
|
|
22
|
+
* Build: `uv build`, Hatchling (`pyproject.toml:43-48`), Python `>=3.12,<3.14` (`:6`).
|
|
23
|
+
* Test: no pytest config/markers/CI found; `uv run python -m pytest -q` (`README.md:184-188`), pytest in dev group (`pyproject.toml:23-32`).
|
|
24
|
+
* Lint/hooks: Ruff (`pyproject.toml:50-112`); pre-commit excludes tests/exps/notebooks from Ruff (`.pre-commit-config.yaml:21-29`).
|
|
25
|
+
* Dev: devenv provides Python 3.12, uv, Ruff, pre-commit, OpenMP (`devenv.nix:19-34`).
|
|
26
|
+
* Docs: Markdown README/experiment READMEs; no Sphinx/MkDocs. Notebook excluded.
|
|
27
|
+
|
|
28
|
+
## Name-reference Inventory
|
|
29
|
+
```bash
|
|
30
|
+
git grep -inE 'scikit[ _-]?rank|beeformer|dcn-exps|tabicl' -- ':!*.ipynb'
|
|
31
|
+
git grep -ilE 'beeformer|dcn-exps|tabicl' -- ':!*.ipynb'
|
|
32
|
+
git ls-files | grep -iE 'scikit|beeformer|dcn-exps|tabicl'
|
|
33
|
+
```
|
|
34
|
+
* `beeformer`, `dcn-exps`, `tabicl`: **zero tracked matches** (case-insensitive, notebook excluded). Ignored `.pytest_cache/v/cache/lastfailed` has historic `tabicl/...`; clear caches for whole-worktree acceptance scans.
|
|
35
|
+
* Main distribution/docs refs: `pyproject.toml:2,48,104`; `uv.lock:2093`; `README.md:1,5,12,45,51,60,83,95`; `exps/README.md:3,21,107`; `exps/bars/README.md:4,104,167`; `exps/bars/{_adapters.py,_data.py,train.py}`; `exps/scripts/{compare_predictions_auc.py,evaluate_ranking.py,train_temporal_dcn.py:25,27}`; `exps/temporal_article/{README.md,final_metrics.json}`.
|
|
36
|
+
* Source: all `src/scikit_rank/` paths plus intra-package imports/docstrings in `__init__.py`, `data.py`, `factories.py`, `preprocessing.py`, `run.py`, `modules/{__init__,dcn}.py`, `sklearn/{__init__,_data_router,_types,estimator}.py`, `train/{__init__,optimizers,options}.py`, `utils/{__init__,ipc_materializer}.py`.
|
|
37
|
+
* Tests: every test except `tests/conftest.py` references `scikit_rank`; exact inventory: `git grep -l scikit_rank -- tests`.
|
|
38
|
+
|
|
39
|
+
## Test Triage
|
|
40
|
+
**Keep:** sklearn/loss contracts (`test_sklearn_compliance`, `test_estimator_specs`, `test_loss_model_alignment`, `test_ranker_eval_metrics`); data/lazy tests (`test_data_router`, `test_lazy_arrow_source`, `test_lazy_dataframe_support`, `test_lazy_eager_parity`); feature tests (`test_dcn_features`, `test_encoder_specs`, `test_embedding_features`, `test_multihash_features`, `test_ple_encoder`, `test_quantile_normalize`, `test_inner_cross_layers`, `test_extra_layers`); training tests (`test_group_batch_sampler`, `test_optimizers`, `test_ema`). Each covers a distinct advertised feature.
|
|
41
|
+
|
|
42
|
+
**Lowest-value consolidation only if DDP is deliberately de-scoped:** `test_accelerate_multiworker.py`, `test_ddp_loss_reduce.py`, `test_ddp_metric_gather.py`, `test_ddp_ranking_training.py`, `test_ddp_sharding.py` (1,113 LOC, overlapping subprocess setup). Do not remove while README promises multi-GPU/DDP. For faster retained-DDP CI, keep `test_ddp_ranking_training` and `test_group_batch_sampler`, consolidate unique reduce/gather/sharding assertions before removing probes.
|
|
43
|
+
|
|
44
|
+
## Start Here
|
|
45
|
+
Open `pyproject.toml`, then update all `git grep` results, move `src/scikit_rank`, and validate install/import/full tests.
|
|
46
|
+
|
|
47
|
+
## Commands Run
|
|
48
|
+
```bash
|
|
49
|
+
git status --short; git ls-files
|
|
50
|
+
git grep -inE 'scikit[ _-]?rank|beeformer|dcn-exps|tabicl' -- ':!*.ipynb'
|
|
51
|
+
git grep -ilE 'beeformer|dcn-exps|tabicl' -- ':!*.ipynb'
|
|
52
|
+
git diff --cached --name-only
|
|
53
|
+
wc -l tests/test_*.py
|
|
54
|
+
```
|
|
55
|
+
No tracked source/config was edited. Five pre-existing temporal experiment changes are unstaged; index is empty.
|
|
56
|
+
|
|
57
|
+
```acceptance-report
|
|
58
|
+
{"criteriaSatisfied":[{"id":"criterion-1","status":"satisfied","evidence":"Read-only audit; bounded cleanup targets."},{"id":"criterion-2","status":"satisfied","evidence":"Paths, inventory commands, test triage, and Git state supplied."}],"changedFiles":[],"testsAddedOrUpdated":[],"commandsRun":[{"command":"git grep -inE 'scikit[ _-]?rank|beeformer|dcn-exps|tabicl' -- ':!*.ipynb'","result":"passed","summary":"Current-name refs found; no tracked forbidden-name match."},{"command":"git status --short && git diff --cached --name-only","result":"passed","summary":"Five pre-existing unstaged changes; index empty."},{"command":"wc -l tests/test_*.py","result":"passed","summary":"24 tests, 3,855 lines."}],"validationOutput":["Tracked forbidden names: zero matches excluding notebooks.","No staged files."],"residualRisks":["Ignored pytest cache contains tabicl paths.","Do not overwrite existing temporal experiment edits.","Removing DDP tests while retaining DDP claims risks regressions."],"noStagedFiles":true,"diffSummary":"No repository diff; audit artifact only.","reviewFindings":["No blockers: rename both scikit-rank and scikit_rank, lockfile, and all grep references."],"manualNotes":"No tests run: read-only audit."}
|
|
59
|
+
```
|