hegeltest 0.2.0-x86_64-linux → 0.2.1-x86_64-linux

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 002b96ea526d4a771046a0cde5d984554bf945d45d2e1f403d99b1662ea4809e
4
- data.tar.gz: 7f58cf4828c9cab85010f4e2e3df1ade6ff7c6092e213007a34421687d2135ac
3
+ metadata.gz: a982eb65094c033fd232751d0d426b34ac87ab21a35b976e5db1f7710e843603
4
+ data.tar.gz: eb9442fb05a6415f91c71c222475590eef8ae15ae50f00aff830aecd9bba6b45
5
5
  SHA512:
6
- metadata.gz: b4e9384ac83849a11f404908f046cac1ec6144445e36bd6546900fb7d90763194cd600906f07d944ce5d3cf1d1aa3f30942a8b834fea2f1d1daf741b64f56070
7
- data.tar.gz: 6137838f7bfb75a2d5d183aaf02306b99093c37e160c6726823402534123523434f02c658c02a4ea72e102a86eaa198a38868b6caacb2a0e85a7e0e8ff537ece
6
+ metadata.gz: d4057d297863376fdc6afb7b23236eeb7102683e07a36f69ce937e37db829bd17604f5a25c97fccbe4062818e155f0c1631eab159a7e3524800010144c8c4b0c
7
+ data.tar.gz: ded73a9f66f6c1693c7403c40f76c35d5b2b59b785d1fbc0e9178ff16c76d9a6a87e0fe2140246cbea5812168d4262657f1ef9d2361777b795c79ecf54833aca
data/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.2.1] - 2026-10-08
6
+
7
+ Each platform gem carries `libhegel` 0.45.1, up from 0.45.0. A caller has
8
+ nothing to change. The engine now reads a NULL string buffer with length
9
+ zero as the empty string, and it rejects a NULL buffer with a nonzero
10
+ length. These bindings send neither case, so a drawn value does not
11
+ change: `from_regex("", fullmatch: true)` draws `""` on both engines.
12
+
5
13
  ## [0.2.0] - 2026-10-07
6
14
 
7
15
  The floor is Ruby 3.4. A project on Ruby 3.3 stays on 0.1.1. See
@@ -120,6 +128,7 @@ The engine is called through the `ffi` gem. Each platform gem carries the
120
128
  matching `libhegel` 0.32.5 build. The platform-independent gem carries none,
121
129
  so a run on it needs `HEGEL_LIBHEGEL_PATH` pointing at a local build.
122
130
 
131
+ [0.2.1]: https://github.com/meganemura/hegel-ruby/releases/tag/v0.2.1
123
132
  [0.2.0]: https://github.com/meganemura/hegel-ruby/releases/tag/v0.2.0
124
133
  [0.1.1]: https://github.com/meganemura/hegel-ruby/releases/tag/v0.1.1
125
134
  [0.1.0]: https://github.com/meganemura/hegel-ruby/releases/tag/v0.1.0
data/docs/README.md CHANGED
@@ -30,6 +30,7 @@ An index of the design records for `hegel-ruby`.
30
30
  - [0021: Run a state machine in rounds, with its own step count](adr/0021-run-a-state-machine-in-rounds-with-its-own-step-count.md)
31
31
  - [0022: Keep microsecond times over a nanosecond engine](adr/0022-keep-microsecond-times-over-a-nanosecond-engine.md)
32
32
  - [0023: Leave unset settings to the engine's profile](adr/0023-leave-unset-settings-to-the-engines-profile.md)
33
+ - [0024: Release when a merge changes the gem version](adr/0024-release-when-a-merge-changes-the-gem-version.md)
33
34
 
34
35
  A new decision gets a new record. A changed decision supersedes the old
35
36
  record instead of editing it, so the history stays readable.
@@ -0,0 +1,49 @@
1
+ # 0024: Release when a merge changes the gem version
2
+
3
+ ## Status
4
+
5
+ Accepted. Replaces the tag push that started the Release workflow.
6
+
7
+ ## Context
8
+
9
+ A release took three steps from the maintainer: merge the pull request that
10
+ prepares the version, push the tag `v<version>` on the merged commit, and
11
+ approve the `release` environment. The tag carried no decision of its own.
12
+ The version in `lib/hegel/version.rb` already said what to release, and the
13
+ approval was the real gate.
14
+
15
+ A daily routine now opens a pull request for each new libhegel release, with
16
+ a "Prepare <version>" commit. The maintainer's part should be the decision,
17
+ not the steps around it.
18
+
19
+ GitHub does not start a workflow from a push that a workflow makes with its
20
+ own `GITHUB_TOKEN`. A workflow that pushed the tag after a merge would
21
+ therefore not start a tag-triggered Release workflow.
22
+
23
+ ## Decision
24
+
25
+ The Release workflow starts on a push to `main` that changes
26
+ `lib/hegel/version.rb`. Its first job reads the version and looks for the tag
27
+ `v<version>`. When the tag exists, as after a revert to a released version,
28
+ the run stops there. Otherwise the publish job waits for the `release`
29
+ environment approval, then builds and pushes the gems from the merged
30
+ commit. The last job creates the tag on that commit and the GitHub release
31
+ together, with `gh release create --target`.
32
+
33
+ The tag is created last, after the gems are out. A rejected approval then
34
+ leaves no tag behind, and rerunning the workflow run releases the same
35
+ commit later.
36
+
37
+ Two alternatives were refused. A workflow that only pushed the tag needs a
38
+ personal access token or a GitHub App token to start the tag-triggered
39
+ workflow, which is a long-lived secret for one step. Creating the tag before
40
+ the approval leaves a tag for a version that may never ship, and the check
41
+ job would then skip that version for good.
42
+
43
+ ## Consequences
44
+
45
+ A release is one merge and one approval. Merge a pull request that changes
46
+ the gem version only when that version should ship.
47
+
48
+ A tag pushed by hand no longer starts a release. The workflow's own run on
49
+ `main` is the place to retry one.
@@ -5,5 +5,5 @@ module Hegel
5
5
  # Hegel::VERSION (the gem's own release): hegel-go and hegel-typescript keep
6
6
  # the two separate too, so bumping the pinned engine can land as its own
7
7
  # commit without also releasing a new gem version.
8
- LIBHEGEL_VERSION = "0.45.0"
8
+ LIBHEGEL_VERSION = "0.45.1"
9
9
  end
data/lib/hegel/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Hegel
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hegeltest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: x86_64-linux
6
6
  authors:
7
7
  - meganemura
@@ -69,6 +69,7 @@ files:
69
69
  - docs/adr/0021-run-a-state-machine-in-rounds-with-its-own-step-count.md
70
70
  - docs/adr/0022-keep-microsecond-times-over-a-nanosecond-engine.md
71
71
  - docs/adr/0023-leave-unset-settings-to-the-engines-profile.md
72
+ - docs/adr/0024-release-when-a-merge-changes-the-gem-version.md
72
73
  - docs/architecture.md
73
74
  - lib/hegel.rb
74
75
  - lib/hegel/draw_name.rb