Skip to content

release: promote 2.1.3 to main - #472

Open
dmidlo wants to merge 80 commits into
mainfrom
dev
Open

release: promote 2.1.3 to main#472
dmidlo wants to merge 80 commits into
mainfrom
dev

Conversation

@dmidlo

@dmidlo dmidlo commented Jul 19, 2026

Copy link
Copy Markdown
Owner

Summary

Promote the corrected v2.1.3 release candidate from dev at 3418fc73122c4e5cab56cdf27bf09f8e8cfc7d7e to main after successful TestPyPI publication and live-index verification. v2.1.3 supersedes immutable TestPyPI candidates v2.1.0 through v2.1.2 after the promotion matrix exposed Windows import/install defects in #473 and a macOS numerical-failure serialization defect in #474.

Closes #473 and #474. Refs #449 and #430.

Release evidence

  • Full all-files pre-commit battery passed on the exact dev source revision, both before and after the version bump.
  • Full plain test suite passed: 2,049 passed, 4 expected opt-in real-artifact skips, 0 failures/errors.
  • Repository-configured mypy passed.
  • Post-bump version/state-space/packaging/release tests passed: 26 passed.
  • Local TestPyPI-style simple-registry preflight passed, including build/Twine checks, fresh install, dependency metadata, Temporal lifecycle/routing, quality-runtime, and live download smokes.
  • TestPyPI 2.1.3 publication passed via the documented local Twine/keyring path: https://test.pypi.org/project/histdatacom/2.1.3/
  • TestPyPI wheel SHA-256: 0c21d61e3ab96ed87fc1975b2f7fde7ed69eaf6dc15300a0b15e520c05788028.
  • TestPyPI sdist SHA-256: 5f54e584b9f4020e0feb99b42fa878eefe9594bbecba8ab1568f430fbca037f2.
  • Live TestPyPI install verification passed from https://test.pypi.org/simple/; the downloaded wheel hash matched the uploaded artifact exactly.
  • TestPyPI artifacts were intentionally unsigned under the documented verification-machine path because the only local GPG secret key expired in 2024.

Windows corrections (#473)

  • Consolidated eight resource-budget callers behind one cross-platform peak-RSS adapter.
  • Unix keeps ru_maxrss semantics with Linux KiB normalized to bytes.
  • Windows uses GetProcessMemoryInfo().PeakWorkingSetSize through standard-library ctypes.
  • Unsupported or failed probes return an explicit unavailable sentinel rather than a fabricated Unix value.
  • A subprocess regression test imports every affected public release surface while resource import is forcibly unavailable.
  • Declared the first-party tzdata>=2026.3 IANA database as a core dependency because Windows has no system IANA database.
  • Wheel inspection fails if tzdata is omitted, and installed-package smoke records the resolved tzdata version.
  • A no-system-timezone-path probe and the full random-window/DST suite pass with the packaged fallback.

State-space correction (#474)

  • Audited both _FitOutcome construction paths and all sample, fold, and row-projection consumers of optional filtered/smoothed vectors.
  • Named state diagnostics retain only complete entries bounded by the shortest state vector and the configured limit.
  • Failed numerical fits preserve their bounded status, reason, and model state dimension without fabricating state values.
  • Fold and row projections report state availability from retained vectors rather than forecast/diagnostic timing alone.
  • Regression coverage exercises absent vectors, deliberately partial vectors, and unchanged ready-fit semantics.
  • The three tests that failed on macOS in the v2.1.2 promotion run pass locally on macOS in the complete suite.

Promotion boundary

This PR is the single dev to main production-coverage boundary required by repository policy. Merge only after the complete GitHub matrix, including macOS tests, Windows wheel smoke, Windows tests, and required Production coverage, passes. Production PyPI publication and verification will occur from main after merge using the exact TestPyPI artifacts.

dependabot Bot and others added 30 commits July 6, 2026 14:12
…updates

Bumps the github-actions group with 3 updates in the / directory: [actions/setup-python](https://github.com/actions/setup-python), [actions/attest](https://github.com/actions/attest) and [github/codeql-action](https://github.com/github/codeql-action).


Updates `actions/setup-python` from 6.2.0 to 6.3.0
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](actions/setup-python@v6.2.0...v6.3.0)

Updates `actions/attest` from 4.1.0 to 4.1.1
- [Release notes](https://github.com/actions/attest/releases)
- [Changelog](https://github.com/actions/attest/blob/main/RELEASE.md)
- [Commits](actions/attest@v4.1.0...v4.1.1)

Updates `github/codeql-action` from 4.36.2 to 4.36.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@v4.36.2...v4.36.3)

---
updated-dependencies:
- dependency-name: actions/attest
  dependency-version: 4.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: actions/setup-python
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: github/codeql-action
  dependency-version: 4.36.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
…5 updates

Updates the requirements on [temporalio](https://github.com/temporalio/sdk-python), [coverage](https://github.com/coveragepy/coveragepy), [commitizen](https://github.com/commitizen-tools/commitizen), [ruff](https://github.com/astral-sh/ruff) and [setuptools](https://github.com/pypa/setuptools) to permit the latest version.

Updates `temporalio` to 1.30.0
- [Release notes](https://github.com/temporalio/sdk-python/releases)
- [Changelog](https://github.com/temporalio/sdk-python/blob/main/CHANGELOG.md)
- [Commits](temporalio/sdk-python@1.10.0...1.30.0)

Updates `coverage` from 7.14.2 to 7.15.0
- [Release notes](https://github.com/coveragepy/coveragepy/releases)
- [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst)
- [Commits](coveragepy/coveragepy@7.14.2...7.15.0)

Updates `commitizen` from 4.16.3 to 4.16.4
- [Release notes](https://github.com/commitizen-tools/commitizen/releases)
- [Changelog](https://github.com/commitizen-tools/commitizen/blob/master/CHANGELOG.md)
- [Commits](commitizen-tools/commitizen@v4.16.3...v4.16.4)

Updates `ruff` from 0.15.18 to 0.15.20
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](astral-sh/ruff@0.15.18...0.15.20)

Updates `setuptools` from 82.0.1 to 83.0.0
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](pypa/setuptools@v82.0.1...v83.0.0)

---
updated-dependencies:
- dependency-name: temporalio
  dependency-version: 1.30.0
  dependency-type: direct:production
  dependency-group: python-packaging
- dependency-name: coverage
  dependency-version: 7.15.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-packaging
- dependency-name: commitizen
  dependency-version: 4.16.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-packaging
- dependency-name: ruff
  dependency-version: 0.15.20
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-packaging
- dependency-name: setuptools
  dependency-version: 83.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: python-packaging
...

Signed-off-by: dependabot[bot] <support@github.com>
Materialize ASCII tick cache rows with deterministic identity, quality issue flags, classification codes, and synthetic placeholders.
exercise the eurusd triangle cache path and ensure raw ascii tick caches emit enriched training fields into influx
…bughunt

[codex] Enrich ASCII tick caches for training and Influx
…actions-162a5fd8d5

chore(deps): bump the github-actions group across 1 directory with 3 updates
…85a05fbd9

chore(deps): bump the python-packaging group across 1 directory with 5 updates
Remove an orphaned OHLC flatline compactor left after raw M1 fingerprint removal and prevent retired bar keys from re-entering tick fingerprints.

Refs #410
Fail closed across form, archive, cache, quality, API, and Influx paths; validate declared payload dimensions and cover public/private rejection seams.

Refs #412
Replace duplicated hook and closure runs with receipt-backed final pre-push coverage.
Add bounded tick-only trend, seasonality, residual, smoothing, and structural-break proxies with stationarity-informed readiness, reporting, and period-grain training projection.
Expose bounded, publish-safe skip events across report, runtime, and CLI consumers while preserving duplicate-archive counters.

Refs #337
Link bounded publish-safe timestamp evidence to remediation actions.
Profile aligned groups, overlap, correlations, topology, triangle/inverse closure, and stale joins once per run.

Refs #331
Infer rule context from helpers, local objects, callers, and stable finding prefixes while retaining bounded ambiguity evidence.

Refs #355
derive bounded fixability-ranked catalog edit plans from ranked gaps

Refs: #354
derive bounded manual operations from saved quality findings

Refs: #356
derive bounded product recommendations from saved readiness, registry, and training evidence
Compare source and cache fingerprint sections plus enriched training, report, and Influx projections through bounded advisory metadata.

Refs #378
Derive bounded generator constraints from enriched ASCII tick rows and validate candidate fingerprints through report and CLI surfaces.

Refs #333
Evaluate opt-in deterministic baselines over enriched tick rows with explicit splits, advisory stationarity guards, and flat training and report projections.

Refs #332
Define deterministic regularization, transforms, rolling-origin folds, bounded fit/evaluation schemas, and augmented training-row projections for the full classical-model curriculum.

Refs #421
Fit explicit SES, Holt, damped, Holt-Winters, and ETS specifications over regularized rolling-origin folds with bounded reports and point-in-time cm_ets projections.

Refs #422
Implement deterministic AR, ARMA, and ARIMA rolling-origin diagnostics with bounded report surfaces and point-in-time augmented columns.
Implement explicit SARIMA, ARIMAX, and SARIMAX rolling-origin diagnostics with deterministic calendar regressors, bounded reports, and point-in-time augmented columns.
dmidlo added 17 commits July 14, 2026 16:22
Preserve the existing Markdown corpus while adding versioned Sphinx tooling, complete navigation, and a warning-as-error CI build.
Fit bounded operators from real epoch evidence with blocked temporal holdouts.
Add official-source adapters, immutable artifacts, preflight integration, and PyArrow 24 test compatibility. Closes #461 and #469.

Closes #461. Closes #469.
ingest official CFTC PRE Legacy and TFF history with immutable replay, strict ex-ante queries, and reconstruction consumer lineage. Refs #468
narrow CFTC source metadata without changing runtime behavior. Refs #470
freeze content-addressed hard and advisory policy before real candidate results. Refs #463
Build and replay real three-symbol blocked partitions, execute every declared degradation, score controls against the 25-metric gate surface, and publish content-addressed campaign evidence.

Refs: #463
build a leakage-safe installed index from real modern tick caches and bind qualification to the frozen benchmark

Refs #464
Register real seven-stage adapters, generic delivery persistence, crash recovery, deterministic Parquet integration gates, and complete cancellation cleanup.
Implement broker-neutral exact-range planning, streaming evidence, and fail-closed v2 campaign certification.

Refs: #449
reuse the successful TestPyPI run artifact, verify registry hashes, and correct SemVer tag triggering

Refs #449

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 27447b6b25

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +515 to +517
row_id = values.get("row_id")
if row_id not in (None, ""):
tags["row_id"] = str(row_id)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Keep per-row IDs out of Influx tags

When users run --import_to_influxdb on a normal tick cache, emit_influx_cache_batches() now calls ensure_tick_training_features(), so every row has a unique row_id; this branch promotes that value to an Influx tag. Since Influx series cardinality is keyed by tag values, a monthly tick import can create a separate series for every tick instead of one low-cardinality pair/timeframe series, making writes and queries much slower or overwhelming the bucket. Keep row_id as a field or omit it from the Influx projection tags.

Useful? React with 👍 / 👎.

Comment on lines +14 to +15
tags:
- "v*"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Match container publishing to SemVer release tags

The release workflow and release docs now use bare SemVer tags such as 2.1.0, but this container workflow only triggers on v* tags and the publish job repeats startsWith(github.ref, 'refs/tags/v'). With the documented 2.1.0 release tag, the container workflow never runs, so the GHCR image described in the README is not published for that release. Align this trigger and publish guard with the SemVer tag pattern used by release.yml.

Useful? React with 👍 / 👎.

@dmidlo dmidlo changed the title release: promote 2.1.0 to main release: promote 2.1.1 to main Jul 19, 2026
dmidlo added 2 commits July 19, 2026 02:22
Declare the first-party IANA database as a core dependency and enforce it in wheel and installed-package smoke validation.
@dmidlo dmidlo changed the title release: promote 2.1.1 to main release: promote 2.1.2 to main Jul 19, 2026
dmidlo added 2 commits July 19, 2026 03:37
Align named state diagnostics to complete vectors so failed numerical fits serialize without fabrication.
@dmidlo dmidlo changed the title release: promote 2.1.2 to main release: promote 2.1.3 to main Jul 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(v2.1.2): make Windows release surfaces portable

1 participant