Repository navigation
feat: add measured experimental feature engineering improvements - #9
Conversation
Add opt-in learner-aware tabular selection, fitted rules, point-in-time features and explicit classification ensembles while retaining legacy defaults. Harden sklearn integration, provider errors and optional-package typing without fabricated feature fallbacks. Add matched, resource-bounded, resumable benchmarks with dataset admission, source and split provenance, exact controls and preserved failed outcomes. Include regression averaging and training-only refit diagnostics. Retain the full development and confirmation evidence, including severe tail harms and blocked decisions. Replicated mean gains support these experimental improvements, not SOTA or default promotion. Preserve hash-bound evidence bytes in Git and keep generated test scratch, raw datasets and unrelated submissions out of the commit. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc6747ca-1d37-46b8-a1c4-fb650ac71116
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
🟡 Changes recommended
The newly registered frequency operator cannot be executed through the registry’s public feature-creation contract because it requires an unprovided mapping argument.
1 open finding
What changed in this PR
Adds opt-in learner-aware feature engineering, leakage-safe fitted transforms, provider hardening, and reproducible benchmark evidence while preserving legacy defaults.
Changes:
- Introduces fitted, predictive, categorical, and point-in-time feature workflows.
- Hardens sklearn/LLM integration, typing, validation, and error handling.
- Publishes bounded benchmark protocols, diagnostics, and archived results.
| File | Description |
|---|---|
tests/test_utils.py |
Updates model-default tests. |
tests/test_transform_rules.py |
Tests shared execution namespace. |
tests/test_sklearn_compat.py |
Tests cloning and cross-fitting. |
tests/test_selection.py |
Tests constant correlations. |
tests/test_paired_selection.py |
Tests paired selection policy. |
tests/test_litellm.py |
Adds isolated LiteLLM fixture. |
tests/test_engines.py |
Tests categorical encoding behavior. |
tests/test_core.py |
Tests registry-created execution. |
pyproject.toml |
Adds benchmark dependencies. |
mkdocs.yml |
Adds classification guide. |
featcopilot/utils/parallel.py |
Normalizes parallel results. |
featcopilot/utils/models.py |
Updates model and SDK handling. |
featcopilot/utils/frequency.py |
Adds frozen frequency mappings. |
featcopilot/utils/cache.py |
Validates metadata shape. |
featcopilot/selection/redundancy.py |
Guards missing correlations. |
featcopilot/llm/explainer.py |
Tightens client typing. |
featcopilot/llm/code_generator.py |
Centralizes code normalization. |
featcopilot/llm/_types.py |
Defines provider protocols. |
featcopilot/engines/text.py |
Improves transformers typing. |
featcopilot/engines/__init__.py |
Exports experimental engines. |
featcopilot/core/transform_rule.py |
Fixes execution scoping. |
featcopilot/core/registry.py |
Registers frequency transformation. |
featcopilot/core/feature.py |
Resolves registered callables. |
featcopilot/core/base.py |
Adds training-transform hook. |
featcopilot/core/__init__.py |
Exports fitted-rule models. |
featcopilot/__init__.py |
Exposes fitted-rule APIs. |
docs/user-guide/engines.md |
Documents new engines. |
docs/user-guide/cli.md |
Documents predictive CLI options. |
docs/index.md |
Revises benchmark claims. |
docs/getting-started/quickstart.md |
Adds leakage-safe pipeline example. |
docs/getting-started/authentication.md |
Documents provider behavior. |
docs/examples/relational-feature-engineering.md |
Adds point-in-time example. |
docs/examples/llm-powered.md |
Updates model guidance. |
benchmarks/tabular-results/2026-10-08-regression-training-audit/protocol.json |
Records audit protocol. |
benchmarks/tabular-results/2026-10-08-regression-training-audit/launcher_timing.json |
Records runtime. |
benchmarks/tabular-results/2026-10-08-regression-training-audit/auxiliary_archive.json |
Indexes audit source. |
benchmarks/tabular-results/2026-10-08-regression-training-audit/archive.json |
Indexes audit results. |
benchmarks/tabular-results/2026-10-08-regression-policy-replication/launcher_timing.json |
Records replication runtime. |
benchmarks/tabular-results/2026-10-08-regression-policy-replication/auxiliary_archive.json |
Indexes replication inputs. |
benchmarks/tabular-results/2026-10-08-regression-policy-replication/archive.json |
Indexes replication results. |
benchmarks/tabular-results/2026-10-08-regression-average-development/launcher_timing.json |
Records development runtime. |
benchmarks/tabular-results/2026-10-08-regression-average-development/controller.json |
Records controller provenance. |
benchmarks/tabular-results/2026-10-08-regression-average-development/auxiliary_archive.json |
Indexes development inputs. |
benchmarks/tabular-results/2026-10-08-regression-average-development/archive.json |
Indexes development results. |
benchmarks/tabular-results/2026-10-04-thoracic-fixed-average-confirmation/auxiliary_archive.json |
Indexes confirmation inputs. |
benchmarks/tabular-results/2026-10-04-thoracic-fixed-average-confirmation/archive.json |
Indexes confirmation results. |
benchmarks/tabular-results/2026-10-04-thoracic-fixed-average-confirmation/ANALYSIS.md |
Reports blocked confirmation. |
benchmarks/tabular-results/2026-10-04-oof-blend-development/decision.json |
Records blend decision. |
benchmarks/tabular-results/2026-10-04-oof-blend-development/auxiliary_archive.json |
Indexes blend inputs. |
benchmarks/tabular-results/2026-10-04-oof-blend-development/archive.json |
Indexes blend results. |
benchmarks/tabular-results/2026-10-04-fixed-average-development/decision.json |
Records averaging decision. |
benchmarks/tabular-results/2026-10-04-fixed-average-development/auxiliary_archive.json |
Indexes averaging inputs. |
benchmarks/tabular-results/2026-10-04-fixed-average-development/archive.json |
Indexes averaging results. |
benchmarks/tabular-results/2026-10-04-autofeat-safe-scale-diagnostic/launcher_timing.json |
Records diagnostic runtime. |
benchmarks/tabular-results/2026-10-04-autofeat-safe-scale-diagnostic/auxiliary_archive.json |
Indexes diagnostic source. |
benchmarks/tabular-results/2026-10-04-autofeat-safe-scale-diagnostic/archive.json |
Indexes diagnostic results. |
benchmarks/tabular-results/2026-10-03-target-encoding-development/decision.json |
Records encoding decision. |
benchmarks/tabular-results/2026-10-03-target-encoding-development/auxiliary_archive.json |
Indexes encoding inputs. |
benchmarks/tabular-results/2026-10-03-target-encoding-development/archive.json |
Indexes encoding results. |
benchmarks/tabular-results/2026-10-03-subsample85-development/decision.json |
Records subsampling decision. |
benchmarks/tabular-results/2026-10-03-subsample85-development/auxiliary_archive.json |
Indexes subsampling inputs. |
benchmarks/tabular-results/2026-10-03-subsample85-development/archive.json |
Indexes subsampling results. |
benchmarks/tabular-results/2026-10-03-qualified-policy-confirmation/auxiliary_archive.json |
Indexes policy inputs. |
benchmarks/tabular-results/2026-10-03-qualified-policy-confirmation/archive.json |
Indexes policy results. |
benchmarks/tabular-results/2026-10-03-classifier-extraction-parity/parity.json |
Records parity checks. |
benchmarks/tabular-results/2026-10-03-classifier-extraction-parity/auxiliary_archive.json |
Indexes parity inputs. |
benchmarks/tabular-results/2026-10-03-classifier-extraction-parity/archive.json |
Indexes parity results. |
benchmarks/tabular-results/2026-10-03-classifier-extraction-parity/ANALYSIS.md |
Reports classifier parity. |
benchmarks/tabular-results/2026-10-01-calibration-replication/REPORT.md |
Reports calibration replication. |
benchmarks/tabular-results/2026-10-01-calibration-replication/auxiliary_archive.json |
Indexes replication inputs. |
benchmarks/tabular-results/2026-10-01-calibration-replication/archive.json |
Indexes replication results. |
benchmarks/tabular-results/2026-10-01-calibration-development/REPORT.md |
Reports calibration development. |
benchmarks/tabular-results/2026-10-01-calibration-development/auxiliary_archive.json |
Indexes calibration inputs. |
benchmarks/tabular-results/2026-10-01-calibration-development/archive.json |
Indexes calibration results. |
benchmarks/tabular-results/2026-09-30-robust-confirmation/auxiliary_archive.json |
Indexes confirmation inputs. |
benchmarks/tabular-results/2026-09-30-robust-confirmation/archive.json |
Indexes confirmation results. |
benchmarks/tabular-results/2026-09-30-fixed-plan-development/decision.json |
Records fixed-plan decision. |
benchmarks/tabular-results/2026-09-30-fixed-plan-development/auxiliary_archive.json |
Indexes fixed-plan inputs. |
benchmarks/tabular-results/2026-09-30-fixed-plan-development/archive.json |
Indexes fixed-plan results. |
benchmarks/tabular-results/2026-09-29-training-selection-audit/request-5.json |
Records audit request. |
benchmarks/tabular-results/2026-09-29-training-selection-audit/request-4.json |
Records audit request. |
benchmarks/tabular-results/2026-09-29-training-selection-audit/request-3.json |
Records audit request. |
benchmarks/tabular-results/2026-09-29-training-selection-audit/request-2.json |
Records audit request. |
benchmarks/tabular-results/2026-09-29-training-selection-audit/request-1.json |
Records audit request. |
benchmarks/tabular-results/2026-09-29-training-selection-audit/request-0.json |
Records audit request. |
benchmarks/tabular-results/2026-09-29-training-selection-audit/launcher_timing.json |
Records audit runtime. |
benchmarks/tabular-results/2026-09-29-training-selection-audit/auxiliary_archive.json |
Indexes audit inputs. |
benchmarks/tabular-results/2026-09-29-training-selection-audit/archive.json |
Indexes audit results. |
benchmarks/tabular-results/2026-09-29-robust-training-audit/resource_accounting.json |
Records resource usage. |
benchmarks/tabular-results/2026-09-29-robust-training-audit/record-21.json |
Preserves audit result. |
benchmarks/tabular-results/2026-09-29-robust-training-audit/record-20.json |
Preserves audit result. |
benchmarks/tabular-results/2026-09-29-robust-training-audit/record-17.json |
Preserves audit result. |
benchmarks/tabular-results/2026-09-29-robust-training-audit/record-16.json |
Preserves audit result. |
benchmarks/tabular-results/2026-09-29-robust-training-audit/record-13.json |
Preserves audit result. |
benchmarks/tabular-results/2026-09-29-robust-training-audit/record-12.json |
Preserves audit result. |
benchmarks/tabular-results/2026-09-29-robust-training-audit/record-09.json |
Preserves audit result. |
benchmarks/tabular-results/2026-09-29-robust-training-audit/record-08.json |
Preserves audit result. |
benchmarks/tabular-results/2026-09-29-robust-training-audit/record-05.json |
Preserves audit result. |
benchmarks/tabular-results/2026-09-29-robust-training-audit/record-04.json |
Preserves audit result. |
benchmarks/tabular-results/2026-09-29-robust-training-audit/record-01.json |
Preserves audit result. |
benchmarks/tabular-results/2026-09-29-robust-training-audit/record-00.json |
Preserves audit result. |
benchmarks/tabular-results/2026-09-29-robust-training-audit/launcher_timing.json |
Records audit runtime. |
benchmarks/tabular-results/2026-09-29-robust-training-audit/archive.json |
Indexes audit results. |
benchmarks/tabular-results/2026-09-29-robust-training-audit/.gitignore |
Excludes local audit artifacts. |
benchmarks/tabular-results/2026-09-29-robust-development/phase1_checkpoint.json |
Records resumable checkpoint. |
benchmarks/tabular-results/2026-09-29-robust-development/auxiliary_archive.json |
Indexes development inputs. |
benchmarks/tabular-results/2026-09-29-robust-development/archive.json |
Indexes development results. |
benchmarks/tabular-results/2026-09-29-bagged-development/decision.json |
Records bagging decision. |
benchmarks/tabular-results/2026-09-29-bagged-development/auxiliary_archive.json |
Indexes bagging inputs. |
benchmarks/tabular-results/2026-09-29-bagged-development/archive.json |
Indexes bagging results. |
benchmarks/tabular-results/2026-09-29-aligned-training-audit/supplementary_archive.json |
Indexes oversized records. |
benchmarks/tabular-results/2026-09-29-aligned-training-audit/record-15.json |
Preserves aligned result. |
benchmarks/tabular-results/2026-09-29-aligned-training-audit/record-12.json |
Preserves aligned result. |
benchmarks/tabular-results/2026-09-29-aligned-training-audit/record-09.json |
Preserves aligned result. |
benchmarks/tabular-results/2026-09-29-aligned-training-audit/record-06.json |
Preserves aligned result. |
benchmarks/tabular-results/2026-09-29-aligned-training-audit/record-03.json |
Preserves aligned result. |
benchmarks/tabular-results/2026-09-29-aligned-training-audit/record-00.json |
Preserves aligned result. |
benchmarks/tabular-results/2026-09-29-aligned-training-audit/launcher_timing.json |
Records aligned runtime. |
benchmarks/tabular-results/2026-09-29-aligned-training-audit/auxiliary_archive.json |
Indexes aligned inputs. |
benchmarks/tabular-results/2026-09-29-aligned-training-audit/archive.json |
Indexes aligned results. |
benchmarks/tabular-results/2026-09-29-aligned-development/auxiliary_archive.json |
Indexes development inputs. |
benchmarks/tabular-results/2026-09-29-aligned-development/archive.json |
Indexes development results. |
benchmarks/tabular-results/2026-09-28-frequency-iid-confirmation/auxiliary_archive.json |
Indexes frequency inputs. |
benchmarks/tabular-results/2026-09-28-frequency-iid-confirmation/archive.json |
Indexes frequency results. |
benchmarks/tabular-results/2026-09-24-logistic-worker-efficiency/auxiliary_archive.json |
Indexes efficiency inputs. |
benchmarks/tabular-results/2026-09-24-logistic-worker-efficiency/archive.json |
Indexes efficiency results. |
benchmarks/tabular-results/2026-09-24-frozen-native-confirmation/auxiliary_archive.json |
Indexes native inputs. |
benchmarks/tabular-results/2026-09-24-frozen-native-confirmation/archive.json |
Indexes native results. |
benchmarks/tabular-results/2026-09-24-frequency-development/auxiliary_archive.json |
Indexes frequency inputs. |
benchmarks/tabular-results/2026-09-24-frequency-development/archive.json |
Indexes frequency results. |
benchmarks/tabular-results/2026-09-23-joint-importance-development/auxiliary_archive.json |
Indexes importance inputs. |
benchmarks/tabular-results/2026-09-23-joint-importance-development/archive.json |
Indexes importance results. |
benchmarks/tabular-results/2026-09-23-extended-development/auxiliary_archive.json |
Indexes extended inputs. |
benchmarks/tabular-results/2026-09-23-extended-development/archive.json |
Indexes extended results. |
benchmarks/tabular-results/2026-09-23-extended-development/ANALYSIS.md |
Reports extended comparison. |
benchmarks/tabular-results/2026-09-22-full-reference-development/auxiliary_archive.json |
Indexes reference inputs. |
benchmarks/tabular-results/2026-09-22-full-reference-development/archive.json |
Indexes reference results. |
benchmarks/tabular-results/2026-09-21-retail-relational/ANALYSIS.md |
Reports temporal evaluation. |
benchmarks/tabular-results/2026-09-21-confirmation-completion/archive.json |
Indexes completion results. |
benchmarks/tabular-results/2026-09-21-confirmation-completion/ANALYSIS.md |
Reports confirmation completion. |
benchmarks/tabular-results/2026-09-20-seoul-temporal/archive.json |
Indexes temporal results. |
benchmarks/tabular-results/2026-09-20-seoul-temporal/ANALYSIS.md |
Reports temporal findings. |
benchmarks/tabular-results/2026-09-20-locked-confirmation/archive.json |
Indexes locked results. |
benchmarks/tabular-results/2026-09-20-locked-confirmation/ADMISSION_STATUS.md |
Records admission failures. |
benchmarks/tabular-results/2026-09-20-llm-pilot/archive.json |
Indexes LLM results. |
benchmarks/tabular-results/2026-09-20-llm-pilot/ANALYSIS.md |
Reports LLM pilot. |
benchmarks/tabular-results/2026-09-17-roadmap-pilot/archive.json |
Indexes roadmap results. |
benchmarks/tabular_suite.json |
Defines development datasets. |
benchmarks/tabular_openfe.py |
Adds OpenFE compatibility. |
benchmarks/suites/seoul_inventory.json |
Registers temporal inventory. |
benchmarks/suites/regression_training_audit_20261008.json |
Freezes audit configuration. |
benchmarks/datasets.py |
Validates loader contracts. |
.pre-commit-config.yaml |
Protects frozen artifacts. |
.github/workflows/tests.yml |
Adds mypy CI check. |
.gitattributes |
Preserves benchmark bytes. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Keep fitted frequency mappings out of the public unary transformation registry while retaining their internal callable during stored-feature execution. Cover all default registry transformations and serialized frequency features. Preserve optional XGBoost constructors through the existing model protocol, convert NumPy index/count scalars before division, and annotate variable array shapes for the CI Python/NumPy matrix without suppressing errors. Leave archived benchmark evidence and experimental defaults unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc6747ca-1d37-46b8-a1c4-fb650ac71116
Declare process-test dependencies and exercise the optional LLM adapter in CI. Keep pure mock tests independent of the SDK, support its explicit stdio transport, and report missing SDK configuration before opening data. Preserve current and legacy session cleanup without type suppression. Restore the original checksum-bound CRLF bytes of the two legacy cache descriptors and preserve them through Git and pre-commit. Their parsed contents and recorded checksums remain unchanged. Verify logging helper restoration against each handler's original stream instead of stderr only. Keep the native solver and its parity tests unchanged; the isolated Python 3.10 reproduction did not reproduce the CI native crash. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc6747ca-1d37-46b8-a1c4-fb650ac71116
Require SDK 0.3.0 or newer to match the existing keyword-only session APIs. Those SDK versions require Python 3.11+, while the core package remains compatible with Python 3.10. Do not install an older incompatible SDK in the Python 3.10 CI job; continue running its core and mock-provider tests. Document the optional-extra requirement and exercise supported SDK contracts in the Python 3.11-3.13 jobs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc6747ca-1d37-46b8-a1c4-fb650ac71116
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #9 +/- ##
==========================================
+ Coverage 89.34% 93.34% +3.99%
==========================================
Files 38 52 +14
Lines 4364 7796 +3432
==========================================
+ Hits 3899 7277 +3378
- Misses 465 519 +54
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Run the unchanged logistic worker tests and full suite under GDB on the failing Linux/Python 3.10 lane. Preserve child exit status and all test assertions so the repeated SciPy native crash can be diagnosed rather than hidden by a solver change or skip. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc6747ca-1d37-46b8-a1c4-fb650ac71116
The Linux native backtrace faults in SciPy's dtrsm_iunncopy_SKYLAKEX worker. Compare the unchanged tests and solver with the same numerical packages using the Haswell kernel, and log the effective BLAS implementation before both diagnostic runs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc6747ca-1d37-46b8-a1c4-fb650ac71116
The native crash reproduces with both SkylakeX and Haswell kernels in SciPy's bundled OpenBLAS 0.3.28. Its worker-growth path matches the missing buffer initialization fixed by OpenMathLib/OpenBLAS#4879. Preinitialize the eight workers required by the unchanged tests before Python starts. Restore automatic CPU dispatch; do not reduce thread caps, change solvers, skip assertions, or change numerical dependencies. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc6747ca-1d37-46b8-a1c4-fb650ac71116
The reproduced x86-64 Linux crash follows OpenBLAS 0.3.28's missing worker-buffer initialization path. SciPy 1.15.0 through 1.15.3 share the affected scipy-openblas32 0.3.28.0.2 wheel-build dependency. Exclude only those four releases on the reproduced platform. SciPy 1.14.1 remains compatible with Python 3.10 and NumPy 2.2.6, while other platforms and future patched releases remain unconstrained by this fix. Restore ordinary full-suite execution on every matrix lane and remove temporary GDB, CPU-dispatch and startup-thread diagnostics. Keep the L-BFGS-B solver, engine thread caps and all test assertions unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc6747ca-1d37-46b8-a1c4-fb650ac71116
|
Review feedback and CI failures are addressed through
Final ordinary CI is green: Python 3.10, 3.11, 3.12 and 3.13 tests/type checks, pre-commit, and both Codecov checks passed in run 38077674235. The formerly crashing Python 3.10 lane used SciPy 1.14.1 and passed 3,554 tests, including both native binary/multiclass parity cases, with 199 reported skips and 93.37% coverage. Temporary GDB, CPU-kernel and startup-thread overrides have been removed. The native solver, eight-thread assertions, full core matrix, experimental defaults and benchmark outcomes remain unchanged. The existing review thread is resolved. GitHub reports the PR mergeable, with required review approval still outstanding. |
## Summary Add the independent grok-4.7 stage-2 architecture review for PR 9. It reports four open design-contract issues: plan-provider ownership, screening versus deployment preprocessing, benchmark controller separation, and the legacy gate_n_jobs knob. ## Prompting Intent Run an independent High stage-2 Architecture and patterns review of PR 9 from base bf11981 through 46c7db9 plus uncommitted review fixes. Do not read other review artifacts, edit product code, call providers, or run real benchmarks. Write only the assigned Markdown artifact and commit it. The parent owns fixes and tests. ## Linked Sources - Review contract: session review-pr9/stage2-attempt1/review-round-2.md - Scope: session review-pr9/scope.json - Pull request: #9 - Base: bf11981 - No ADO work item id was supplied; the assigned slug is task-9 ## Rationale The artifact records findings without product-code fixes because the assignment reserves fixes and tests for the parent. Only concrete API and dependency-direction defects are included. The gate_n_jobs coupling is classified as pre-existing after checking the base commit, rather than reported as a new regression. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc6747ca-1d37-46b8-a1c4-fb650ac71116
## Summary Repair defects identified by the six-stage High review of PR #9 and retain all 24 independent review artifacts with their original verdicts and appended resolution history. Harden fitted schemas, categorical and target semantics, optional diagnostics, isolated provider lifecycles, resumable benchmark accounting, source identity, worker supervision and atomic publication. Remove verified avoidable allocation and history-scan costs, align optional benchmark dependencies, and correct public documentation. ## Prompting Intent The engineer asked to use the review-code skill to review PR #9, following earlier requests to address PR comments and CI failures. The engineer explicitly authorized a High two-model override using gpt-6.1-sol at max reasoning and grok-4.7 at xhigh, waiving unavailable Opus while retaining all six ordered stages and the two-attempt stage cap. Preserve legacy defaults, unrelated work and checksum-bound historical evidence; make no unsupported SOTA claim. ## Linked Sources - Pull request: #9 - Review scope base: bf11981 - Starting reviewed head: 46c7db9 - Review decisions, findings and resolution history: reviews/pr9/ - Repository contributor policy: AGENTS.md - Benchmark contract: benchmarks/TABULAR_PROTOCOL.md - Reference environment and execution instructions: benchmarks/README.md - Public behavior contracts: docs/user-guide/ and docs/examples/relational-feature-engineering.md - No Azure DevOps task was supplied; linkage is to GitHub PR #9. ## Rationale Fix concrete introduced defects at their owning boundaries rather than change defaults or regenerate historical scores. Share isolated typed-plan transport without redesigning legacy code mode. Preserve primary errors and privacy-safe diagnostics, exact source-byte identity, immutable evidence generations and training-only feature semantics. Avoid mtime-only fingerprint caches and unnecessary per-cell report work. Keep pre-existing concerns and capped dirty stage outcomes explicit: repair validation is not a new independent clean review, and this work does not establish SOTA or a general no-harm guarantee. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc6747ca-1d37-46b8-a1c4-fb650ac71116
High review completed; fixes published in 08317c7Completed all six ordered The repairs cover fitted output schemas and target/categorical semantics, This is not a blanket clean verdict. Each stage reached its two-attempt Validation: The frozen-source full suite completed with 4,217 passes, Fresh Python 3.10-3.13 CI is running on the published commit: |
## Summary Fix the two cross-environment failures in the published PR review repairs. Keep isolated-plan return typing explicit when the optional SDK is absent. Check target-encoding batch invariance exactly at the learner input while using the established numerical tolerance for final probabilities. ## Prompting Intent Complete the requested review-code review of PR #9 and address resulting CI failures without weakening runtime contracts, requiring optional dependencies, changing legacy defaults or rewriting frozen benchmark evidence. ## Linked Sources - Pull request: #9 - Failed matrix: https://github.com/thinkall/featcopilot/actions/runs/38614776818 - Review repairs: 08317c7 - Driver validation history: reviews/pr9/task-9-attempt-1-stage-attempt-1-review-1-gpt-6.1-sol.md - Existing probability tolerance: tests/test_classification.py - No ADO task was supplied; the GitHub PR carries the chore label. ## Rationale The shared plan validator already guarantees SDK message text; a local type annotation preserves that contract when mypy cannot import optional SDK types. Do not install the SDK on unsupported Python 3.10 or suppress type checking. Linux BLAS can differ in the final floating-point bits for batched prediction, so preserve exact transformed-input assertions and the existing tight learner tolerances instead of changing production arithmetic. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc6747ca-1d37-46b8-a1c4-fb650ac71116
|
CI follow-up pushed in 8e44ad4. The first matrix found an optional-SDK typing boundary on Python 3.10 and overly strict bitwise probability assertions on Linux. The fix retains exact encoded-input equality, uses the existing tight probability tolerances, and adds no runtime fallback or mandatory SDK dependency. Missing/installed-SDK mypy, affected tests on both SDK versions, wheel build, and full pre-commit passed. Fresh matrix: https://github.com/thinkall/featcopilot/actions/runs/38618933772 |
## Summary Make the SDK-independent synchronous-bridge cancellation test assert asyncio.TimeoutError and its chained cause, which are distinct from the built-in TimeoutError on Python 3.10. ## Prompting Intent Finish the requested PR #9 review and resulting CI repairs while preserving the reviewed timeout, cancellation and exception-identity behavior. ## Linked Sources - Pull request: #9 - Matrix: https://github.com/thinkall/featcopilot/actions/runs/38618933772 - Failing Python 3.10 job: https://github.com/thinkall/featcopilot/actions/runs/38618933772/job/116041110938 - Driver history: reviews/pr9/task-9-attempt-1-stage-attempt-1-review-1-gpt-6.1-sol.md - No ADO task was supplied; the GitHub PR carries the chore label. ## Rationale asyncio.wait_for correctly propagates asyncio.TimeoutError. The test relied on its Python 3.11+ alias to the built-in class. Assert the originating API's type rather than normalize away the production exception identity or change deadline and cancellation guarantees. Full tests/types already pass on Python 3.11-3.13; this is a two-assertion test-only compatibility repair. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc6747ca-1d37-46b8-a1c4-fb650ac71116
|
Final verification is green on e8cc44d: Tests run 38622490682 passed all four Python lanes, including package mypy (52 files) in each lane. Pre-commit also passed.
The six-stage High review and CI follow-ups are complete. All 24 review artifacts and resolution histories are committed. Earlier capped-stage verdicts and deferred legacy/architectural concerns remain explicit; green CI is not a blanket clean review or a SOTA claim. The PR remains mergeable and awaits its required human approval; no merge was performed. |

Summary
Measured improvements and limits
On the exposed development panels, three-seed classifier averaging reduced mean log loss by 6.82% versus its matched raw control. Two-seed regression replication reduced primary-panel mean RMSE by 23.79% for linear single FE and 2.97% for LightGBM averaging.
These results do not establish SOTA or justify default promotion. Individual hardware folds still suffered severe harms, and independent confirmation remains unresolved. The committed reports retain those failures and the subsequent training-only numerical investigation.
Validation
pre-commit run --all-filespassed.Unrelated submissions, raw datasets and generated test scratch are excluded. This PR publishes commit
5367d34c84eb42b8580250c4e851d00406154894.