Skip to content

chore: release v0.12.0 - #197

Open
levi770 wants to merge 1 commit into
mainfrom
release-plz-2026-08-06T09-26-34Z
Open

chore: release v0.12.0#197
levi770 wants to merge 1 commit into
mainfrom
release-plz-2026-08-06T09-26-34Z

Conversation

@levi770

@levi770 levi770 commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

🤖 New release

  • xlog-core: 0.11.0 -> 0.12.0
  • xlog-ir: 0.11.0 -> 0.12.0
  • xlog-cuda: 0.11.0 -> 0.12.0
  • xlog-stats: 0.11.0 -> 0.12.0
  • xlog-logic: 0.11.0 -> 0.12.0
  • xlog-runtime: 0.11.0 -> 0.12.0
  • xlog-solve: 0.11.0 -> 0.12.0
  • xlog-prob: 0.11.0 -> 0.12.0
  • xlog-gpu: 0.11.0 -> 0.12.0
  • xlog-cli: 0.11.0 -> 0.12.0
  • xlog-induce: 0.12.0
  • xlog-neural: 0.12.0
  • pyxlog: 0.12.0
Changelog

xlog-core

0.12.0 - 2026-08-31

Fixed

  • enforce production contracts and benchmark integrity (#278)
  • (runtime) preserve epistemic constraint diagnostics (#213)
  • (logic) preserve predicate unions and recursive epistemic semantics (#195)

Other

  • Complete second-audit remediation across runtime, Python, telemetry, and CI (#279)
  • realign the public documentation with v0.12.0 (#203)
  • (deps) bump arrow from 53.4.1 to 59.2.0 (#207)
  • align runtime contracts and release status (#191)
  • truth-align public claims and complete discovery metadata (#176)

xlog-ir

0.12.0 - 2026-08-31

Added

  • (cuda) execute dependency-closed plans in one resident graph

Fixed

  • (epistemic) [breaking] preserve authored constraint identity (#258)
  • (epistemic) [breaking] replace vacuous fallback telemetry (#256)
  • (logic) preserve predicate unions and recursive epistemic semantics (#195)

Other

  • Complete second-audit remediation across runtime, Python, telemetry, and CI (#279)
  • realign the public documentation with v0.12.0 (#203)
  • align runtime contracts and release status (#191)
  • truth-align public claims and complete discovery metadata (#176)

xlog-cuda

0.12.0 - 2026-08-31

Added

  • (cuda) support arbitrary-arity joint constraints
  • (cuda) execute dependency-closed plans in one resident graph
  • (induce) bounded exact n-ary rule induction — enumeration, reference scorer, CUDA kernel, device-resident engine (#240)
  • (python) [breaking] make n-ary provenance native and delta-safe (#188)

Fixed

  • enforce production contracts and benchmark integrity (#278)
  • (cuda) report exact memory pressure and peak usage (#254)
  • (cuda) honour XLOG_REQUIRE_CUDA in the n-ary launcher unit tests (#245)
  • (prob) align circuit log-sum-exp semantics across CPU and GPU (#230)
  • (cuda) remove dormant RawCudaView recorder contract (#229)
  • (cuda) [breaking] remove unselectable dense D4 frontier (#236)
  • (logic) preserve predicate unions and recursive epistemic semantics (#195)

Other

  • Make CUDA wheel builds reproducible and validate exact artifacts (#281)
  • Complete second-audit remediation across runtime, Python, telemetry, and CI (#279)
  • (cuda) [breaking] skip redundant certified unions
  • align strict Clippy with current stable (#237)
  • realign the public documentation with v0.12.0 (#203)
  • (deps) bump arrow from 53.4.1 to 59.2.0 (#207)
  • align runtime contracts and release status (#191)
  • (runtime) batch same-head rule unions into one multiway pass per head (#183)
  • (cuda) retain freed mempool blocks so drop-and-reuse tests observe reuse on large-VRAM GPUs
  • truth-align public claims and complete discovery metadata (#176)

xlog-stats

0.12.0 - 2026-08-31

Fixed

  • (logic) preserve predicate unions and recursive epistemic semantics (#195)

Other

  • Complete second-audit remediation across runtime, Python, telemetry, and CI (#279)
  • realign the public documentation with v0.12.0 (#203)
  • align runtime contracts and release status (#191)
  • truth-align public claims and complete discovery metadata (#176)

xlog-logic

0.12.0 - 2026-08-31

Added

  • (cuda) execute dependency-closed plans in one resident graph
  • (logic) warn when imported-module pragmas are ignored (#189)

Fixed

  • enforce production contracts and benchmark integrity (#278)
  • (epistemic) [breaking] preserve authored constraint identity (#258)
  • (epistemic) [breaking] replace vacuous fallback telemetry (#256)
  • (logic) [breaking] remove dormant type and name scaffolding (#234)
  • (cli) align explain with normalized execution (#225)
  • (runtime) preserve epistemic constraint diagnostics (#213)
  • (logic) preserve predicate unions and recursive epistemic semantics (#195)
  • (cli) evaluate imported rules in probabilistic programs (#193)
  • (logic) reject cross-predicate schema mismatches at compilation

Other

  • Complete second-audit remediation across runtime, Python, telemetry, and CI (#279)
  • (logic) fact fast path in the compiler frontend (parser + owned passes) (#272)
  • (logic) remove frontend quadratics and make compiler output deterministic (#252)
  • (logic) remove redundant executable fact rules (#255)
  • (logic) share ground-term encoding (#231)
  • align strict Clippy with current stable (#237)
  • realign the public documentation with v0.12.0 (#203)
  • align runtime contracts and release status (#191)
  • apply rustfmt to the TIER-2 epistemic sources
  • Merge TIER-2 epistemic possible-source probes into main
  • truth-align public claims and complete discovery metadata (#176)

xlog-runtime

0.12.0 - 2026-08-31

Added

  • (cuda) execute dependency-closed plans in one resident graph
  • (python) [breaking] make n-ary provenance native and delta-safe (#188)
  • feat!(runtime): mark the output stats structs non_exhaustive

Fixed

  • enforce production contracts and benchmark integrity (#278)
  • (production) [breaking] derive diagnostics from real boundaries (#263)
  • (epistemic) [breaking] preserve authored constraint identity (#258)
  • (epistemic) [breaking] replace vacuous fallback telemetry (#256)
  • (cuda) report exact memory pressure and peak usage (#254)
  • (runtime) [breaking] remove dormant epistemic export (#228)
  • (cli) align explain with normalized execution (#225)
  • (runtime) preserve epistemic constraint diagnostics (#213)
  • (logic) preserve predicate unions and recursive epistemic semantics (#195)

Other

  • Complete second-audit remediation across runtime, Python, telemetry, and CI (#279)
  • (cuda) [breaking] skip redundant certified unions
  • (logic) remove redundant executable fact rules (#255)
  • realign the public documentation with v0.12.0 (#203)
  • align runtime contracts and release status (#191)
  • (runtime) batch same-head rule unions into one multiway pass per head (#183)
  • apply rustfmt to the TIER-2 epistemic sources
  • Merge TIER-2 epistemic possible-source probes into main
  • truth-align public claims and complete discovery metadata (#176)

xlog-solve

0.12.0 - 2026-08-31

Fixed

  • (production) [breaking] derive diagnostics from real boundaries (#263)
  • (epistemic) [breaking] replace vacuous fallback telemetry (#256)
  • (logic) preserve predicate unions and recursive epistemic semantics (#195)

Other

  • Complete second-audit remediation across runtime, Python, telemetry, and CI (#279)
  • realign the public documentation with v0.12.0 (#203)
  • align runtime contracts and release status (#191)
  • serialize GPU-state-sharing test binaries
  • (solve) align production-gate message asserts with the host-to-device wording
  • truth-align public claims and complete discovery metadata (#176)

xlog-prob

0.12.0 - 2026-08-31

Added

  • (prob) [breaking] reuse conditioned exact circuits (#257)
  • (pyxlog) expose exact log-evidence and the CNF variable to fact mapping (#180)

Fixed

  • enforce production contracts and benchmark integrity (#278)
  • (epistemic) [breaking] replace vacuous fallback telemetry (#256)
  • (prob) [breaking] remove unreachable exact GPU compiler (#233)
  • (prob) align circuit log-sum-exp semantics across CPU and GPU (#230)
  • (cuda) [breaking] remove unselectable dense D4 frontier (#236)
  • (prob) [breaking] remove unused CSR CNF module (#235)
  • (cli) align explain with normalized execution (#225)
  • (prob) restore G91 evidence GPU coverage (#200)
  • (logic) preserve predicate unions and recursive epistemic semantics (#195)
  • (cli) evaluate imported rules in probabilistic programs (#193)

Other

  • Complete second-audit remediation across runtime, Python, telemetry, and CI (#279)
  • (cuda) [breaking] skip redundant certified unions
  • realign the public documentation with v0.12.0 (#203)
  • align runtime contracts and release status (#191)
  • (prob) make MC benches measure real inference and fail loudly on evaluate errors
  • truth-align public claims and complete discovery metadata (#176)

xlog-gpu

0.12.0 - 2026-08-31

Added

  • (cuda) execute dependency-closed plans in one resident graph
  • (pyxlog) condition exact queries on accepted epistemic evidence (#201)
  • (logic) warn when imported-module pragmas are ignored (#189)
  • (python) [breaking] make n-ary provenance native and delta-safe (#188)

Fixed

  • (epistemic) [breaking] preserve authored constraint identity (#258)
  • (epistemic) [breaking] replace vacuous fallback telemetry (#256)
  • (cuda) report exact memory pressure and peak usage (#254)
  • (cli) align explain with normalized execution (#225)
  • (runtime) preserve epistemic constraint diagnostics (#213)
  • (logic) preserve predicate unions and recursive epistemic semantics (#195)

Other

  • Complete second-audit remediation across runtime, Python, telemetry, and CI (#279)
  • (logic) fact fast path in the compiler frontend (parser + owned passes) (#272)
  • (logic) remove redundant executable fact rules (#255)
  • (logic) share ground-term encoding (#231)
  • realign the public documentation with v0.12.0 (#203)
  • align runtime contracts and release status (#191)
  • truth-align public claims and complete discovery metadata (#176)

xlog-cli

0.12.0 - 2026-08-31

Added

  • (logic) warn when imported-module pragmas are ignored (#189)

Fixed

  • enforce production contracts and benchmark integrity (#278)
  • (production) [breaking] derive diagnostics from real boundaries (#263)
  • (epistemic) [breaking] preserve authored constraint identity (#258)
  • (epistemic) [breaking] replace vacuous fallback telemetry (#256)
  • (cuda) report exact memory pressure and peak usage (#254)
  • (cli) align explain with normalized execution (#225)
  • (runtime) preserve epistemic constraint diagnostics (#213)
  • (logic) preserve predicate unions and recursive epistemic semantics (#195)
  • (cli) evaluate imported rules in probabilistic programs (#193)
  • (cli) drop the epistemic-evidence tests that need an untracked fixture

Other

  • Complete second-audit remediation across runtime, Python, telemetry, and CI (#279)
  • realign the public documentation with v0.12.0 (#203)
  • (deps) bump arrow from 53.4.1 to 59.2.0 (#207)
  • align runtime contracts and release status (#191)
  • truth-align public claims and complete discovery metadata (#176)


This PR was generated with release-plz.

@levi770 levi770 added the release label Aug 6, 2026
Copilot AI lite review requested due to automatic review settings August 6, 2026 09:26
@levi770 levi770 added the release label Aug 6, 2026

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.

Pull request overview

This PR is a release-plz–generated release chore for v0.12.0, updating the repository changelog to reflect the new crate versions and their aggregated changes.

Changes:

  • Adds v0.12.0 release notes sections into CHANGELOG.md for multiple crates.
  • Updates links/dates and categorizes entries under Added/Fixed/Other.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread CHANGELOG.md
Copilot AI review requested due to automatic review settings August 7, 2026 15:22
@levi770
levi770 force-pushed the release-plz-2026-08-06T09-26-34Z branch from cc055fe to dbc9061 Compare August 7, 2026 15:22

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.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.

Suppressed comments (1)

CHANGELOG.md:11

  • This PR adds a second full set of 0.12.0 changelog sections dated 2026-08-07, but the file already contains 0.12.0 sections dated 2026-08-06 further down (e.g. starting at line 158). This leaves duplicate headings/entries for the same version and makes the changelog ambiguous. Please deduplicate so there is exactly one 0.12.0 section per crate (and ensure the correct release date), rather than appending another full copy.
## [0.12.0](https://github.com/BrainyBlaze/xlog/compare/xlog-cli-v0.11.0...xlog-cli-v0.12.0) - 2026-08-07

### Added

- *(logic)* warn when imported-module pragmas are ignored ([#189](https://github.com/BrainyBlaze/xlog/pull/189))

@levi770

levi770 commented Aug 10, 2026

Copy link
Copy Markdown
Contributor Author

Read-only release-state check (review pass over all open PRs)

This rolling PR is stale and must not be merged as-is — but per the release rules it also must not be closed without care. Facts, all read-only:

  • chore: release v0.12.0 #196 (chore: release v0.12.0) merged 2026-08-06 09:23; main's [workspace.package].version is already 0.12.0, and main's CHANGELOG.md already contains the full set of 0.12.0 sections.
  • v0.12.0 was never published: the remote has no xlog-cli-v0.12.0 tag (newest is v0.11.0), and crates.io's last update is from the 0.11.0 release window. The manual workflow_dispatch publish step — with GPU validation evidence — is the missing link in the documented release path.
  • This PR (chore: release v0.12.0 #197) was created 3 minutes after chore: release v0.12.0 #196 merged, from a fresh release-plz-2026-08-06T09-26-34Z branch, and its diff is CHANGELOG.md-only (+151): it would add ten ## [0.12.0] sections that main already carries — pure duplicates (same crate ranges, re-dated 2026-08-07). Its body also lists xlog-induce / xlog-neural / pyxlog at bare 0.12.0 with no 0.11.0 → arrow — the shared-version partial-set signature (those crates have no prior release tag), which is the likely trigger for the regeneration.

Suggested path (human decisions, in order): (1) run scripts/validate_release_gpu.sh --mode release on a CUDA host against the merged release commit and trigger the publish workflow_dispatch for the already-merged v0.12.0 — that creates the tags and publishes; (2) after the tags exist, let release-plz reconcile on the next push — this PR should then regenerate to empty or to the next version, at which point the duplicate-changelog problem disappears on its own. Merging #197 before publishing would double the 0.12.0 changelog sections.

@levi770
levi770 force-pushed the release-plz-2026-08-06T09-26-34Z branch 16 times, most recently from db9d354 to 2596e49 Compare August 12, 2026 11:53

@levi770 levi770 left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Deep review — PR #197 (release v0.12.0) @ 2596e498393c4bbc70c7990545cf923302c4daa6

Verdict: content-accurate for its base, but STALE and FROZEN — do not merge at this head. 1 HIGH (process, root-caused and reproduced) / 2 MEDIUM / 2 LOW / 2 NOTEs. The version arithmetic is right and the purity is perfect; the problem is that release-plz has silently stopped updating this PR, and the changelog omits two breaking fixes and the headline feature that are already on main.

HIGH — the release-worthiness gate false-negatives via SIGPIPE, so this rolling PR cannot self-heal

Head 2596e4983 sits on #232. Main has since gained fix(prob)! #233, fix(logic)! #234, and feat(induce) #240 (n-ary rule induction) — none appear in the inserted changelog. Merging at this head publishes 0.12.0 binaries that include that code with release notes omitting two breaking fixes and the headline feature.

Root cause, reproduced: .github/workflows/release-plz.yml gates release-plz release-pr on

if git log --format=%s "$range" | grep -qE '^(feat|fix|...)...' 

under set -euo pipefail. grep -q exits at the first match; git log then takes SIGPIPE writing the rest; pipefail turns the successful match into pipeline status 141, which the if reads as no match. The subject stream crossed the stdio buffer boundary at #233 (4,612 → 4,669 bytes), flipping the race: the CI logs show the #232 push updated this PR at 11:53Z, and all three later runs (#233, #234, #240 pushes) print "No release-worthy commits since xlog-cli-v0.11.0; skipping release PR" while concluding success. Locally reproduced: 19/20 false negatives, exit 141, vs 12 matches with grep -cE. The BREAKING CHANGE: fallback grep has the identical defect.

Fix path: make the gate SIGPIPE-safe via a normal reviewed PR (write subjects to a temp file and grep that, or grep -E … >/dev/null which reads to EOF, instead of -q). The next push to main then refreshes this PR with #233/#234/#240 — and only then does the human-only publish path apply (GPU validation evidence → merge in UI → workflow_dispatch with confirm_gpu_validation=true).

MEDIUMs (inline)

  1. Third duplicate generation of [0.12.0] sections. Merge-base CHANGELOG.md already carries 20 ## [0.12.0] headings (2026-08-06) from the two previously merged-but-never-published release PRs #187/#196; this insertion makes it 30. Root cause: rolling release PRs merged without the publish dispatch, and release-plz appends rather than replaces. Handle inside the regenerated release branch — never by hand-editing main's CHANGELOG.
  2. A breaking change renders without its [breaking] marker: commit 7a5d32046 uses the malformed form feat!(runtime): (bang before scope), so the parser leaks the raw subject into "Added" with no breaking marker for an API-breaking #[non_exhaustive] change. Version math is unaffected (0.x), but the rendered entry should be corrected on regeneration, and commit-lint should reject type!(scope):.

Verified clean (the good news)

  • 0.12.0 is the correct next version for the actual commit set (multiple feat + 4 bang-typed + 6 BREAKING-footer commits since xlog-cli-v0.11.0; 0.x minor bump) — and stays correct even including the missing #233/#234/#240.
  • Perfect purity: one commit, CHANGELOG.md only (+187), no code/version/lock hand-edits, no AI trailers; author/committer pattern identical to prior release-plz commits.
  • 14/14 sampled changelog entries match merged PRs verbatim with correct grouping; breaking markers correct for #188/#228/#235/#236; attribution spot-checks honest (#232 pyxlog-only → correctly absent; arrow #207 present where it should be).
  • Registry/tag state confirmed: no v0.12 tag in any format; crates.io xlog-cli/xlog-core at 0.11.0 (sparse-index check — the v1 API false-404s); xlog-induce/xlog-neural genuinely unpublished; single rolling release PR, live head = reviewed head.

LOWs / NOTEs

  • Side-branch TIER-2 features appear only as a raw merge-commit line under "Other" (first-parent attribution; pre-existing pattern).
  • Nine of ten per-crate compare links point at tags that will never exist (only xlog-cli-v* tags are created); permanent 404s, template-fixable.
  • PR body lists pyxlog as a first release at 0.12.0 while PyPI serves 0.11.0 — registry-mechanical (release-plz doesn't track PyPI), cosmetic.
  • docs-internal/release-process.md is cited as authoritative but is not in the git tree at any checked ref, and its "Automation Layout" bullet misplaces the commit-type restriction (it lives in the workflow gate, not release-plz.toml).

Standing gate (unchanged)

This PR is merged and published only through the human-driven path; no agent may merge, close, tag, or edit versions/changelogs. The HIGH's CI-gate fix should land before this PR is touched further.


Methodology: purity diff vs merge-base; exact gate reproduction under pipefail (19/20 false negatives); CI log extraction for the four release-plz runs; 14-entry changelog sampling against merged PRs; sparse-index/PyPI/tag state checks. Zero cargo runs — the diff contains no code.

Comment thread CHANGELOG.md Outdated
Comment thread CHANGELOG.md
@levi770

levi770 commented Aug 14, 2026

Copy link
Copy Markdown
Contributor Author

All three outstanding review findings are addressed and their threads are resolved in commit 970f184.

  • Rebuilt the release branch as current main plus one release-only commit, with zero merge commits.
  • Regenerated the shared changelog through pinned release-plz 0.3.157: 30 duplicate 0.12.0 headings became exactly 10, one for each configured crate. Two consecutive runs converged to changelog SHA-256 72550a2ba7fa55598c54dfd43079f39c1167979a5d30cb1df2bff97c528509a6.
  • Added a version-aware structural preparation step to the release-pr workflow, an exact dirty-path gate, and --allow-dirty so the authoritative release-plz update consumes the prepared changelog.
  • Normalized only malformed type!(scope): subjects before release-plz classification and added an exact-range CI check for newly introduced malformed subjects. Valid type(scope)!: subjects remain unchanged.

Verification: focused release and workflow tests pass 28/28; actionlint 1.7.7 with ShellCheck 0.10.0, shell lint, tracked-ignore hygiene, Ruff check and format, byte-compilation, commit-range validation, and diff checks pass locally. Every reported PR check is green, including CodeQL, clippy-high-signal, and cuda-build-no-gpu. The broader python/tests run reached 347 passed and 10 skipped before two batch-eval failures and the long trainer path; both exact failures reproduce on clean base dd34058 with the same fixture state.

The PR remains open and unmerged.

@levi770

levi770 commented Aug 16, 2026

Copy link
Copy Markdown
Contributor Author

A refreshed, independently reviewed replacement is now available as #265, stacked on the pipefail-safe release gate in #260.

The replacement was regenerated twice from its exact refreshed ancestry with pinned release-plz 0.3.157 and cargo-semver-checks 0.46.0; both runs reproduced the committed changelog byte-for-byte (e07a0e8ca8840f7dc94c76e3ab8e81d2aa59f7a596e8c1259b59eff3a0bc22c3) and ended clean. Release/docs tests passed 29/29 under system Python and the Python 3.10 + tomli fallback; actionlint, ShellCheck, Ruff, formatting, and diff checks also passed.

#197 remains open and should not be merged at its stale head. No merge, close, tag, publish, or release action was performed.

@levi770
levi770 force-pushed the release-plz-2026-08-06T09-26-34Z branch from 970f184 to 6547e21 Compare August 17, 2026 07:54
@levi770
levi770 force-pushed the release-plz-2026-08-06T09-26-34Z branch 4 times, most recently from 1100a23 to 846aa01 Compare August 30, 2026 14:28
@levi770
levi770 force-pushed the release-plz-2026-08-06T09-26-34Z branch from 846aa01 to d522a26 Compare August 31, 2026 08:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants