Skip to content

release: 4.23.0 - #609

Merged
cdeust merged 3 commits into
mainfrom
release/4.23.0
Sep 17, 2026
Merged

cdeust merged 3 commits into
mainfrom
release/4.23.0

Conversation

@cdeust

@cdeust cdeust commented Sep 17, 2026

Copy link
Copy Markdown
Owner

What

Promotes ## [Unreleased] to ## [4.23.0] - 2026-09-17 and moves every version surface to 4.23.0 (scripts/check_version_surfaces.py: 17 sites agree with pyproject.toml). Same file set as the 4.22.0 cut (#570), plus the README sentences that said "from the release after 4.22.0" now say "since 4.23.0", and the marketplace pin for zetetic-team-subagents moves 2.41.0 to 2.42.0 (released today).

Since 4.22.0, on main: #604 (project-scoped injection), #600 (one saved backend for Claude Code and Codex), #597 (predictions and calibration), #579, #596, #591, #594, #582, #583, #585, #587, #589, #578, #573, #575, #602 (doctor worktree check), #605 and #608 (lifecycle hooks runnable from the wheel under Codex).

After merge: tag v4.23.0 on the merge commit; release.yml builds and attests the distributions, publishes to PyPI and to the MCP registry. check_marketplace_pins.py reports PIN_VERSION_UNPUBLISHED until that tag exists, as it did for #570.

Measured on this branch

python scripts/check_version_surfaces.py   version surfaces OK (17 site(s) checked, all agree with pyproject.toml)
python scripts/check_doc_claims.py         doc claims OK (1 declared not-a-claim exemption)
python scripts/check_project_wiki.py       Project wiki mirrors match their canonical sources.
uvx [email protected] check                      clean
pytest tests_py/scripts/test_cross_host_manifests.py tests_py/scripts/test_check_doc_claims.py tests_py/scripts/test_installer_upgrade_single_version.py tests_py/test_main.py
                                           124 passed, 14 subtests passed

🤖 Generated with Claude Code

https://claude.ai/code/session_01Cz7A6goxVzfKL9NT7k4zDH

@cdeust

cdeust commented Sep 17, 2026

Copy link
Copy Markdown
Owner Author

ZETETIC-REVIEW: REQUEST_CHANGES

Stakes: High (release surface, public manifests, marketplace delivery). Reviewed at 1bc073c in a detached worktree at origin/release/4.23.0. CI is fully green, every gate passes, and the shape matches the 4.22.0 cut exactly. The one blocking finding is in .claude-plugin/marketplace.json, and no gate in this repository can see it.

Blocking: the zetetic-team-subagents pin advertises 2.42.0 while fetching the 2.41.0 tree

.claude-plugin/marketplace.json:105-114 moves "version" from 2.41.0 to 2.42.0 and leaves source.ref and source.sha where they were:

$ git diff origin/main -- .claude-plugin/marketplace.json | grep -E '^[+-]' | grep -v '^[+-][+-]'
-    "version": "4.22.0"
+    "version": "4.23.0"
-      "version": "4.22.0",
+      "version": "4.23.0",
-      "version": "2.41.0",
+      "version": "2.42.0",

The entry as it stands on the branch:

"source": {
  "source": "github",
  "repo": "cdeust/zetetic-team-subagents",
  "ref": "v2.41.0",
  "sha": "77b4f78503e6842928039b75440e20ea670584c8"
},
"version": "2.42.0",

The sha is the 2.41.0 commit, not the 2.42.0 one:

$ gh api repos/cdeust/zetetic-team-subagents/git/ref/tags/v2.41.0 -q .object.sha
b72e782ac9810d762e5291c20583b225100dcab9   (tag object)
$ gh api repos/cdeust/zetetic-team-subagents/git/tags/b72e782a... -q .object.sha
77b4f78503e6842928039b75440e20ea670584c8   <- the pinned sha

$ gh api repos/cdeust/zetetic-team-subagents/git/ref/tags/v2.42.0 -q .object.sha
e048ab9f20ad5511cbc4344f3f3172337a6d63a3   (tag object)
$ gh api repos/cdeust/zetetic-team-subagents/git/tags/e048ab9f... -q .object.sha
96454db132064f8cf3eb5b77432ff1d1f5c5b325

Every install resolving this entry gets ref: v2.41.0 at commit 77b4f785 while the marketplace label says 2.42.0. The pinned ref is what the client checks out; the version field is a claim about it, and the claim is now false. gh release view v2.42.0 --repo cdeust/zetetic-team-subagents confirms the release exists ({"publishedAt":"2026-09-17T08:12:25Z","tagName":"v2.42.0"}), so the pin can move; it just did not.

The established convention moves all three fields in one commit. The last delivery, 8d71210 chore(marketplace): deliver zetetic-team-subagents v2.41.0 (#554), is 1 file changed, 3 insertions(+), 3 deletions(-):

-        "ref": "v2.40.1",
-        "sha": "586e439e575e9759c3224b840768d15c3604ac2f"
+        "ref": "v2.41.0",
+        "sha": "77b4f78503e6842928039b75440e20ea670584c8"
-      "version": "2.40.1",
+      "version": "2.41.0",

Required change, either one:

  1. set "ref": "v2.42.0" and "sha": "96454db132064f8cf3eb5b77432ff1d1f5c5b325" alongside the version already moved; or
  2. revert the zetetic entry to 2.41.0 and deliver 2.42.0 in its own chore(marketplace) commit, as chore(marketplace): deliver zetetic-team-subagents v2.40.1 #553 and chore(marketplace): deliver zetetic-team-subagents v2.41.0 #554 did, keeping the release cut to version surfaces only.

Why no job caught it: check_marketplace_pins.py:76-81 calls check_pin_sha, and scripts/marketplace_pins_github.py:76-101 only asks GitHub whether the sha is reachable in the repo. 77b4f785 is reachable, so it passes. Nothing cross-checks source.ref or source.sha against the sibling version. Worth a follow-up issue: for a source: github entry carrying both a version and a ref, assert the ref's tag dereferences to the pinned sha and the ref matches v{version}. That check would have turned this review comment into a red job.

Everything else measured, and it holds

Shape against the previous cut. git show --stat v4.22.0^{commit} (f4f382e, #570) touched 13 files; this PR touches the same 13, nothing added, nothing missing:

$ git diff --stat origin/main
 .claude-plugin/marketplace.json                         | 6 +++---
 .claude-plugin/plugin.json                              | 2 +-
 CHANGELOG.md                                            | 2 ++
 README.md                                               | 7 +++----
 assets/badge-version.svg                                | 8 ++++----
 gemini-extension.json                                   | 2 +-
 manifest.json                                           | 2 +-
 package-lock.json                                       | 4 ++--
 package.json                                            | 2 +-
 plugins/hypermnesia-mcp-codex/.codex-plugin/plugin.json | 2 +-
 pyproject.toml                                          | 2 +-
 server.json                                             | 4 ++--
 uv.lock                                                 | 2 +-
 13 files changed, 23 insertions(+), 22 deletions(-)

Gates:

$ python scripts/check_version_surfaces.py
version surfaces OK (17 site(s) checked, all agree with pyproject.toml)
$ python scripts/check_doc_claims.py
doc claims OK (1 declared not-a-claim exemption(s))
  CONTRIBUTING.md:36: exempt from the tests claim
$ python scripts/check_project_wiki.py
Project wiki mirrors match their canonical sources.
$ uvx [email protected] check      -> All checks passed!
$ uvx [email protected] format --check -> 3385 files already formatted
$ pytest tests_py/scripts -q  -> 1006 passed, 359 subtests passed in 43.52s
$ pytest tests_py/test_main.py -q -> 11 passed in 2.22s

check_marketplace_pins.py exits 1 with two lines, both expected before the tag exists:

NOTICE: registry: io.github.cdeust/hypermnesia-mcp serves 4.22.0, repo is 4.23.0 — PENDING: release.yml::publish-mcp-registry (this PR) resolves it on the next v* tag push; no CI credential exists to publish it sooner
PIN_VERSION_UNPUBLISHED: hypermnesia-mcp: pins 4.23.0 but this repo has no matching tag (latest tag is v4.22.0)

The NOTICE is the registry lagging the repo, resolved by the tag push. The failure is the self-pin naming a version whose tag does not exist yet, which is the correct state of a release branch and is exactly how #570 behaved: its pins current vs latest releases job was SUCCESS. So was this one.

uv.lock. Only the project's own entry moved, version = "4.22.0" to "4.23.0" under [[package]] name = "hypermnesia-mcp", no dependency line touched. UV_NO_SYNC=1 uv lock --check returns Resolved 169 packages in 12ms, exit 0: the lock agrees with pyproject at 4.23.0.

CHANGELOG. The diff is two added lines placing ## [4.23.0] - 2026-09-17 under an emptied ## [Unreleased], so the 233-line body that stood under Unreleased now sits under 4.23.0. git log --oneline v4.22.0..origin/main lists 22 commits. Every feat and fix among them has a bullet; the section references issue numbers rather than merge-PR numbers, which is the file's convention, so the mapping is #608 to the Codex-event bullet, #605 to the console entry point, #604 to project-scoped injection, #600 to shared backend selection, #602 to the doctor worktree check, #597 to predictions, #596 to SQLite procedural skills, #594 to the runner budget, #591 to both transcript bullets, #589, #587, #585, #583, #582, #579, #578, #575 and #573 to the wiki, launcher and installer bullets. The only commits without a bullet are the four docs and chore ones (#603, #601, #574, #572), and #574 edited the 4.22.0 section rather than adding to this one. One numbering cross-check: the worktree bullet cites ADR-1079, and the merged commit subject 19b78df says ADR-1078; the changelog is the correct one, docs/adr/ADR-1079-report-out-of-convention-git-worktrees-as-an-optional-doctor-warn.md exists and ADR-1078 is the backend-resolution decision.

Release notes. The premise in the review brief does not match the workflow: .github/workflows/release.yml:107-119, the github-release job's Generate changelog step, never reads CHANGELOG.md. It takes PREV_TAG=$(git tag --sort=-version:refname | head -2 | tail -1) and writes git log --pretty=format:"- %s" "${PREV_TAG}"..HEAD to changelog.txt, with generate_release_notes: true on top. Running that logic by hand for a v4.23.0 tag on this commit: the sorted tag list with v4.23.0 present puts v4.22.0 second, and git log --pretty=format:"- %s" v4.22.0..HEAD yields 23 lines starting - release: 4.23.0. Non-empty, so the step is satisfied, but the CHANGELOG quality does not gate it either way.

README. grep -n '4\.22\.0' README.md returns one line, 450, the link to the published v4.22.0 release note, which is historical and stays. No sentence promises "the release after 4.22.0" any more. Repo-wide, the surviving 4.22.0 strings outside CHANGELOG, uv.lock, docs/adr and wiki are three provenance and fixture references (scripts/launcher_deps_record.py:31 recording when a measurement was taken, tests_py/scripts/test_launcher_deps_record.py:5 the same, and the from-4.22.0-mix parametrise ids in tests_py/scripts/test_installer_upgrade_single_version.py:166,176 naming the historical deps-directory state the test reproduces). None is a version surface and none should move.

CI. gh pr checks 609 --watch --fail-fast ends with every required check pass: Lint, Type Check, Craftsmanship Gate, Build Package, Changed paths, CodeQL with all three Analyze jobs, HOL plugin scan, plugin-scanner, Docker Smoke, both Fuzz PR batches, Release dependency set, Validate MCP host configurations, the upstream identity contract, pins current vs latest releases, Test on 3.10 through 3.13, Test (SQLite backend), Test (Windows, SQLite backend), and CI Green. Skipped: both Docker Build images, Fuzz (scheduled batch), Tag a release. That skip set is identical to #570's.

Unblocking this is two field edits in one file: .claude-plugin/marketplace.json:109 to "ref": "v2.42.0" and line 111 to "sha": "96454db132064f8cf3eb5b77432ff1d1f5c5b325".

@cdeust

cdeust commented Sep 17, 2026

Copy link
Copy Markdown
Owner Author

ZETETIC-REVIEW: APPROVE

This supersedes the round-1 comment at 1bc073c (REQUEST_CHANGES, #609 (comment)). Round 1's single blocking finding was that .claude-plugin/marketplace.json moved the zetetic-team-subagents version field to 2.42.0 while ref and sha still pointed at v2.41.0 (77b4f78503e6842928039b75440e20ea670584c8). Commit 1a8adf6 fixes exactly that.

Diff since 1bc073c:

git diff 1bc073c9 1a8adf6d
diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json
index c1418920..32e84e2c 100644
--- a/.claude-plugin/marketplace.json
+++ b/.claude-plugin/marketplace.json
@@ -107,8 +107,8 @@
       "source": {
         "source": "github",
         "repo": "cdeust/zetetic-team-subagents",
-        "ref": "v2.41.0",
-        "sha": "77b4f78503e6842928039b75440e20ea670584c8"
+        "ref": "v2.42.0",
+        "sha": "96454db132064f8cf3eb5b77432ff1d1f5c5b325"
       },

Only those two fields changed, in one file. Nothing else moved.

The sha matches what the v2.42.0 tag resolves to:

gh api repos/cdeust/zetetic-team-subagents/git/ref/tags/v2.42.0 -q .object.sha
e048ab9f20ad5511cbc4344f3f3172337a6d63a3

gh api repos/cdeust/zetetic-team-subagents/git/tags/e048ab9f20ad5511cbc4344f3f3172337a6d63a3 -q .object.sha
96454db132064f8cf3eb5b77432ff1d1f5c5b325

gh release view v2.42.0 --repo cdeust/zetetic-team-subagents --json tagName
{"tagName":"v2.42.0"}

The tag ref returns an annotated tag object; dereferencing that object gives the commit sha the PR pins, and it matches. The release exists.

Pin checker, run at 1a8adf6:

python scripts/check_marketplace_pins.py
NOTICE: registry: io.github.cdeust/hypermnesia-mcp serves 4.22.0, repo is 4.23.0 (PENDING: release.yml::publish-mcp-registry (this PR) resolves it on the next v* tag push; no CI credential exists to publish it sooner)
PIN_VERSION_UNPUBLISHED: hypermnesia-mcp: pins 4.23.0 but this repo has no matching tag (latest tag is v4.22.0)

1 stale pin(s). A release is not shipped until its pin moves: bump .claude-plugin/marketplace.json (and server.json / manifest.json).

This is exactly the one allowed failure round 1 recorded, plus the same registry NOTICE, and the zetetic-team-subagents pin no longer appears in the output at all.

Version surfaces and JSON validity:

python scripts/check_version_surfaces.py
version surfaces OK (17 site(s) checked, all agree with pyproject.toml)

python -c "import json; json.load(open('.claude-plugin/marketplace.json'))"
(no output, valid JSON)

Targeted pytest:

pytest tests_py/scripts/test_check_marketplace_pins_dispatch.py tests_py/scripts/test_cross_host_manifests.py -q
.........
9 passed in 0.86s

PR checks on 1a8adf6, via gh pr checks 609 --repo cdeust/Cortex, all pass or intentionally skip (Docker Build x2 and Tag a release skip as expected on a non-tag-triggering PR event; everything else, including Craftsmanship Gate, Type Check, Lint, all four Python version test jobs, SQLite backend, Windows, Fuzz batches, and pins current vs latest releases, is pass). No pending or failing checks remain.

The round-1 blocking finding is closed, nothing else regressed, and every measurement round 1 held is unchanged at 1a8adf6. Merge is clear.

cdeust and others added 3 commits September 17, 2026 19:04
Promotes the Unreleased section to 4.23.0 and moves the seventeen version
surfaces (pyproject, manifest, plugin and marketplace manifests, Codex and
Gemini manifests, package.json and lock, server.json, badge, uv.lock).
Since 4.22.0: session hooks inject only the session's project and global
memories (#604), one saved backend for Claude Code and Codex (#600),
prediction records and calibration (#597), the wiki draft tools over MCP
(#579), procedural skills on SQLite (#596) with a transcript-fed tool
sequence (#591), the console entry point and Codex event adapter for the
lifecycle hooks (#605, #608), the doctor worktree check (#602), and the
launcher fixes (#573, #575, #582). The marketplace pin for
zetetic-team-subagents moves to its released 2.42.0.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Cz7A6goxVzfKL9NT7k4zDH
…vertises

The review of this cut found version 2.42.0 beside ref v2.41.0 and the
2.41.0 sha; installs would have checked out 77b4f785 under a 2.42.0 label.
ref and sha now name the v2.42.0 tag commit 96454db1, as the earlier
deliveries (#553, #554) moved all three fields together.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Cz7A6goxVzfKL9NT7k4zDH
The ADR-1082 entry cited a consolidate_launch module the craftsmanship
gate refused; the shipped design relaunches session_lifecycle with
--consolidate <mode>, as ADR-1082 and the code say.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Cz7A6goxVzfKL9NT7k4zDH
@cdeust

cdeust commented Sep 17, 2026

Copy link
Copy Markdown
Owner Author

ZETETIC-REVIEW: COMMENT

This supersedes the round-2 comment at 1a8adf6 (APPROVE, #609 (comment)). The branch was rebased onto main at 70343b6 to carry PR #610 (Codex rollout reader, SessionEnd detach, ADR-1081/1082) into 4.23.0, and the tip is now three commits: the cut, the round-2 pin fix, and a changelog wording fix naming the shipped consolidation launcher. Measured on c293fd4, matching the PR's current head.

Merge base:

git merge-base HEAD origin/main
70343b69f1242475519822c4a8157a5d1aae6b14

Matches the stated rebase point.

Diff against origin/main, 13 files, same release set round 1 and round 2 measured:

git diff origin/main --stat
 .claude-plugin/marketplace.json                         | 10 +++++-----
 .claude-plugin/plugin.json                              |  2 +-
 CHANGELOG.md                                            |  7 +++++--
 README.md                                               |  7 +++----
 assets/badge-version.svg                                |  8 ++++----
 gemini-extension.json                                   |  2 +-
 manifest.json                                            |  2 +-
 package-lock.json                                        |  4 ++--
 package.json                                              |  2 +-
 plugins/hypermnesia-mcp-codex/.codex-plugin/plugin.json  |  2 +-
 pyproject.toml                                            |  2 +-
 server.json                                               |  4 ++--
 uv.lock                                                   |  2 +-
 13 files changed, 28 insertions(+), 26 deletions(-)

CHANGELOG carries #610's entries under 4.23.0, and Unreleased is empty:

## [Unreleased]

## [4.23.0] - 2026-09-17

Nothing sits between the two headers. The 4.23.0 section leads with the ADR-1081 entry for the Codex rollout reader (#610), confirming the rebase pulled the section in rather than leaving a stub.

grep -n consolidate_launch CHANGELOG.md

returns nothing (exit 1). The changelog wording fix in the third commit did what it says: it names the launcher that shipped, not the unshipped consolidate_launch.

Version and pin checks:

python scripts/check_version_surfaces.py
version surfaces OK (17 site(s) checked, all agree with pyproject.toml)

python scripts/check_marketplace_pins.py
NOTICE: registry: io.github.cdeust/hypermnesia-mcp serves 4.22.0, repo is 4.23.0 (PENDING: release.yml::publish-mcp-registry (this PR) resolves it on the next v* tag push; no CI credential exists to publish it sooner)
PIN_VERSION_UNPUBLISHED: hypermnesia-mcp: pins 4.23.0 but this repo has no matching tag (latest tag is v4.22.0)

1 stale pin(s). A release is not shipped until its pin moves: bump .claude-plugin/marketplace.json (and server.json / manifest.json).

Only the one allowed failure, plus the matching NOTICE. The zetetic-team-subagents pin round 1 and round 2 dealt with does not appear.

python scripts/check_doc_claims.py
doc claims OK (1 declared not-a-claim exemption(s))
  CONTRIBUTING.md:36: exempt from the tests claim

python scripts/check_project_wiki.py
Project wiki mirrors match their canonical sources.

Both ADR-1081 and ADR-1082 mirror pages are present at wiki/adr/cortex/1081-read-a-codex-rollout-the-same-way-a-claude-transcript-is-read.md and wiki/adr/cortex/1082-sessionend-writes-its-session-log-before-it-detaches-consolidation.md, and the wiki checker confirms they match main.

pytest tests_py/scripts -q
1006 passed, 359 subtests passed in 43.47s

Where this stops short of a clean APPROVE: gh pr checks 609 --watch --fail-fast was run against c293fd4 and, at the point this comment was assembled, had not reached a terminal state. Every check that had reported was pass: Lint, Type Check, Craftsmanship Gate, Build Package, CodeQL, the three CodeQL Analyze legs, Changed paths, HOL plugin scan, Docker Smoke, Release dependency set, Validate MCP host configurations, the upstream identity contract check, pins current vs latest releases, and plugin-scanner. Eight jobs were still pending: Test (Python 3.10/3.11/3.12/3.13), Test (SQLite backend), Test (Windows, SQLite backend), and Fuzz (PR batch) address and undefined. None had failed. This PR's diff touches no source under test by those suites, only version, changelog, and lockfile metadata, so a regression from this diff specifically is not expected, but this repo's rule is that green CI plus a posted verdict is what clears merge, not a partial poll plus an inference.

Everything measurable right now, the rebase point, the file set, the changelog content, the pin state, the doc claims, the wiki mirrors, and the script test suite, is clean and matches or extends what round 1 and round 2 already established. The remaining eight CI jobs need to finish and report green before this clears to merge; nothing so far suggests they won't.

@cdeust

cdeust commented Sep 17, 2026

Copy link
Copy Markdown
Owner Author

ZETETIC-REVIEW: APPROVE

This upgrades the round-3 comment at c293fd4 (COMMENT, #609 (comment)), which held every measurement clean but stopped short of approval because eight CI jobs were still pending. Same sha, all other measurements from that comment stand unchanged (merge base 70343b6, the 13-file release set, empty Unreleased with the 4.23.0 section carrying #610's ADR-1081 entry, no consolidate_launch reference, 17 version surfaces agreeing, the single allowed PIN_VERSION_UNPUBLISHED failure for hypermnesia-mcp 4.23.0, clean doc claims, matching wiki mirrors for ADR-1081 and ADR-1082, and 1006 passed / 359 subtests passed in tests_py/scripts).

gh pr checks 609 on c293fd4 is now terminal:

Analyze (actions)                                         pass  51s
Analyze (javascript-typescript)                           pass  53s
Analyze (python)                                          pass  56s
Build Package                                             pass  20s
CI Green                                                  pass  7s
Changed paths                                             pass  9s
CodeQL                                                    pass  2s
Craftsmanship Gate                                        pass  12s
Docker Smoke (bare-container DB-less contract)            pass  3m5s
Fuzz (PR batch) (address)                                 pass  5m15s
Fuzz (PR batch) (undefined)                               pass  4m47s
HOL plugin scan                                           pass  1m11s
Lint                                                      pass  25s
Release dependency set (requirements/release.txt)         pass  1m20s
Test (Python 3.10)                                        pass  8m51s
Test (Python 3.11)                                        pass  8m22s
Test (Python 3.12)                                        pass  8m55s
Test (Python 3.13)                                        pass  7m5s
Test (SQLite backend)                                     pass  7m23s
Test (Windows, SQLite backend)                            pass  5m53s
Type Check                                                pass  1m33s
Validate MCP host configurations                          pass  1m29s
agree with the upstream identity contract                 pass  9s
pins current vs latest releases                           pass  10s
plugin-scanner                                             pass  2s
Docker Build (devcontainer image)                         skipping  0
Docker Build (runtime image)                              skipping  0
Tag a release                                             skipping  0
Fuzz (scheduled batch)                                    skipping  0

25 pass, 4 skipping (the two Docker image builds, the tag job, and the scheduled fuzz batch, none of which run on a PR event), 0 fail, 0 pending. The eight jobs that were still in flight when round 3 posted, the four Python version test legs, the SQLite and Windows SQLite test legs, and the two Fuzz PR-batch legs, all completed and passed.

Round 1's blocking finding is fixed, round 2's rebase-and-wording-fix measurements hold, and CI is now fully green on the head this PR will merge at. Merge is clear.

@cdeust
cdeust merged commit 24c68c4 into main Sep 17, 2026
29 checks passed
@cdeust
cdeust deleted the release/4.23.0 branch September 17, 2026 17:18
@cdeust cdeust mentioned this pull request Sep 22, 2026
6 tasks done
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.

1 participant