Skip to content

feat: add measured experimental feature engineering improvements - #9

Merged
thinkall merged 12 commits into
mainfrom
feat/measured-feature-engineering
Oct 15, 2026
Merged

thinkall merged 12 commits into
mainfrom
feat/measured-feature-engineering

Conversation

@thinkall

Copy link
Copy Markdown
Owner

Summary

  • Add opt-in learner-aware tabular selection, fitted rules, point-in-time features and explicit classification ensembles.
  • Harden sklearn integration, optional-package typing and provider error handling without fabricated feature fallbacks.
  • Add matched, resource-bounded, resumable benchmarks with source/split provenance, dataset admission, regression averaging and training-only refit diagnostics.
  • Preserve complete positive and negative evidence, including failed reference cells and blocked confirmation decisions. Keep legacy defaults unchanged.

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

  • Full suite exercised 3,729 tests: initially 3,704 passed, 19 skipped and six failed. The six failures were corrected in two test modules: a functional worker test's startup allowance and relational fake estimators' prediction contract. Both affected modules then passed all 265 tests under coverage.
  • Package coverage: 93.48%, above the configured 85% requirement.
  • Package mypy, isolated wheel import/fit and mandatory pre-commit run --all-files passed.
  • Verified 63 archive indexes and exact staged bytes for 591 frozen benchmark artifacts/descriptors. Git attributes and formatter exclusions preserve their checksum-bound bytes.

Unrelated submissions, raw datasets and generated test scratch are excluded. This PR publishes commit 5367d34c84eb42b8580250c4e851d00406154894.

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
Copilot AI balanced review requested due to automatic review settings October 10, 2026 13:54
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-10T14:00:38.411347Z 5367d34 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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.

Comment thread featcopilot/core/registry.py Outdated
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
Copilot AI balanced review requested due to automatic review settings October 10, 2026 16:56

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The exceptionally large experimental and checksum-bound benchmark surface warrants final human validation despite extensive testing.

0 open findings

1 resolved since last review

🧠 Review effort: Balanced

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
Copilot AI balanced review requested due to automatic review settings October 10, 2026 17:57

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Its 339,000-line scope combines new public ML APIs with extensive checksum-bound experimental evidence requiring final human validation.

0 open findings

🧠 Review effort: Balanced

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
Copilot AI balanced review requested due to automatic review settings October 10, 2026 18:06

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Its very large scope combines experimental ML behavior, provider integrations, benchmark machinery, and hundreds of immutable evidence artifacts requiring final human validation.

0 open findings

🧠 Review effort: Balanced

@codecov

codecov Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.34%. Comparing base (bf11981) to head (e8cc44d).

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     
Flag Coverage Δ
unittests 93.34% <ø> (+3.99%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

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
Copilot AI balanced review requested due to automatic review settings October 10, 2026 18:26
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

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

SDK metadata serialization changes public field names, and shipped examples still contradict the new no-mock/default-model contract.

0 open findings

🧠 Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 10, 2026 18:32
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

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Its broad API, leakage-control, CI, dependency, and checksum-bound benchmark changes warrant final human verification despite no specific unresolved defect found.

0 open findings

🧠 Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 10, 2026 18:38

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

LLM code normalization and validation incorrectly accept assignments to result that exist only in nested scopes.

0 open findings

🧠 Review effort: Balanced

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
Copilot AI balanced review requested due to automatic review settings October 10, 2026 18:54

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The single-row target-encoding fallback leaks the training target into its own encoded feature.

0 open findings

🧠 Review effort: Balanced

@thinkall

Copy link
Copy Markdown
Owner Author

Review feedback and CI failures are addressed through 46c7db92165cb4078699c3f4cc00ae9855f3c002.

  • Resolved the unary-registry finding while preserving stored frequency-feature execution and serialization.
  • Fixed portable NumPy/optional-model typing, SDK-independent mocks, missing-SDK preflight errors, current/legacy SDK transport and cleanup, and the logging-fixture stream assumption.
  • Restored the original checksum-bound bytes of both legacy cache descriptors; their parsed data and recorded checksums were not changed.
  • Declared the Copilot SDK version actually required by the existing APIs. Core Python 3.10 remains supported; the Copilot extra requires Python 3.11+.
  • Isolated the Linux native crash to the OpenBLAS 0.3.28 worker-buffer path documented by OpenMathLib/OpenBLAS#4879. The final fix excludes SciPy 1.15.0-1.15.3 only on Python 3.10/Linux/x86-64, allowing SciPy 1.14.1 there. Other platforms and future patched releases remain allowed.

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
@thinkall thinkall added the chore Maintenance and review hardening label Oct 14, 2026
## 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
Copilot AI balanced review requested due to automatic review settings October 14, 2026 18:23
@thinkall

Copy link
Copy Markdown
Owner Author

High review completed; fixes published in 08317c7

Completed all six ordered review-code stages with gpt-6.1-sol (max)
and grok-4.7 (xhigh), using the explicitly approved two-model override.
All 24 independent review artifacts, original verdicts, driver decisions
and repair history are committed in
reviews/pr9.

The repairs cover fitted output schemas and target/categorical semantics,
isolated plan-provider lifecycle and safe diagnostics, resumable benchmark
accounting and immutable publication, worker cleanup, source-identity checks,
avoidable history scans/candidate allocations, dependency constraints and
documentation. Historical numerical evidence and legacy defaults were not
rewritten; no new real-data measurements or live provider calls were made.

This is not a blanket clean verdict. Each stage reached its two-attempt
cap with findings; subsequent repairs do not retroactively change those
verdicts. Explicit follow-ups include independently verified pre-existing
code-mode permission/parsing behavior, empty categorical input handling,
legacy documentation/loader warnings, and broader architectural refactors.
Details and limitations remain in the artifacts.

Validation: The frozen-source full suite completed with 4,217 passes,
19 skips and one stale test fault-injection failure. That test was corrected
to target serialization rather than the former combined hash helper, and all
18 related tests then passed, including strict propagation of three exception
types. Production bytes were unchanged; coverage is 93.42%. Mypy passed
52 files, wheel isolation passed, and mandatory full pre-commit passed.
All frozen-evidence checksums remain intact.

Fresh Python 3.10-3.13 CI is running on the published commit:
Tests run.
No merge or SOTA claim is implied.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The changes require final human review because they are too complex or risky for automated approval.

0 open findings

🧠 Review effort: Balanced

## 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
Copilot AI balanced review requested due to automatic review settings October 14, 2026 18:52
@thinkall

Copy link
Copy Markdown
Owner Author

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

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Broad experimental API and benchmark changes require final human review; project tests were not run during review.

0 open findings

🧠 Review effort: Balanced

## 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
Copilot AI balanced review requested due to automatic review settings October 14, 2026 19:17

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Broad experimental and integration changes require human approval; independent confirmation remains unresolved.

0 open findings

🧠 Review effort: Balanced

@thinkall

Copy link
Copy Markdown
Owner Author

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.

Python Passed Optional skips Coverage
3.10 3,963 276 92.32%
3.11 4,048 191 93.34%
3.12 4,048 191 93.34%
3.13 4,048 191 93.34%

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.

@thinkall
thinkall enabled auto-merge (squash) October 15, 2026 03:27
@thinkall
thinkall merged commit 66328d3 into main Oct 15, 2026
8 checks passed
@thinkall
thinkall deleted the feat/measured-feature-engineering branch October 15, 2026 03:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore Maintenance and review hardening

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants