Skip to content

chore(release): prepare v0.1.5 fix-forward - #6758

Merged
jeswr merged 14 commits into
mainfrom
claude/release-v0.1.5
Oct 11, 2026
Merged

jeswr merged 14 commits into
mainfrom
claude/release-v0.1.5

Conversation

@jeswr

@jeswr jeswr commented Oct 9, 2026

Copy link
Copy Markdown
Collaborator

Before: the v0.1.4 tag's release run stopped at "collect archive digests" because the Windows rows wrote *<name> digest records. No GitHub Release, npm or PyPI package came out of it. The release runbook (docs/release.md §3b) says a failed tag stays fixed and the release fixes forward.

After: merging this PR makes release-plz tag v0.1.5. That tag carries the Windows digest fix (#6717) and the ODRL prohibition security fixes (#6734, #6737), and runs the normal release.yml → GitHub Release → publish.yml (npm + PyPI) path.

How:

  • Workspace, desktop (Cargo + Tauri config) and public npm package versions move to 0.1.5: @sparq-org/sparq, @sparq-org/solid-server, @sparq-org/eyereasoner-compat and the GUI app. Every path-dependency requirement follows, as do the sparq-* records in all 27 Cargo.lock files and the workspace records in package-lock.json. No external dependency changes.
  • CHANGELOG: the [Unreleased] entries become ## [0.1.5] - 2026-10-09, plus a Fixed section for ci(release): text-mode sha256 records so Windows archive digests pass the collector #6717 and the ODRL fixes. The ODRL line is neutral; a "See GHSA-…" pointer gets added only if the maintainer publishes an advisory. Compare links are updated.
  • docs/release.md gets a short "v0.1.5 fix-forward" note.

Checks run locally:

  • cargo metadata --locked passes for the root, gui/src-tauri, fuzz, examples and three bench workspaces.
  • check-release-source.py --tag v0.1.5 passes, with and without --publish, against a throwaway local tag that was deleted afterwards.
  • The release/publish script tests pass (test_release_source, test_release_publish_guard, test_release_slsa_l3_provenance, test_publish_strip, test_release_container_multiarch, test_release_gui_staging).
  • release-interval-guard.py --self-test passes.

Not for merge by the session that opened it.

  • The 24-hour release cadence opens at about 21:10 UTC on 2026-10-09, counted from the v0.1.4 tag run. release-interval-guard --dry-run currently measures from the v0.1.3 tag and says ALLOW, but the project is waiting for the 24 hours from v0.1.4 anyway.
  • The merge, and therefore the tag, is left to a later session or the maintainer.
  • If the merge lands on a later date, update the CHANGELOG date.
  • fix(solid): a rule change whose view cannot be rebuilt fails closed #6742 (sparq-solid stale auth view after a failed ACL rebuild, opt-in features only) isn't included. If it lands first, add its changelog line from the advisory draft.
  • The crates.io bootstrap (docs/release.md §4) stays a separate manual step from the maintainer's machine after the tag.

🤖 Generated with Claude Code

https://claude.ai/code/session_0184oZyLYQNVPp7HYBAr6uYz


Generated by Claude Code

claude added 3 commits October 9, 2026 09:43
Move the workspace, desktop and public npm package versions to 0.1.5,
with every path-dependency requirement and lockfile record following.
Add the 0.1.5 changelog section (Windows digest fix #6717, ODRL
prohibition fixes #6734/#6737) and note the v0.1.4 fix-forward in
docs/release.md.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0184oZyLYQNVPp7HYBAr6uYz
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0184oZyLYQNVPp7HYBAr6uYz
The chain-root lock is the #6647 pin, so the version bump must not edit it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0184oZyLYQNVPp7HYBAr6uYz

jeswr commented Oct 9, 2026

Copy link
Copy Markdown
Collaborator Author

"native credential and circuit composition" fails because this bump moves zk/native-composition/Cargo.lock to sparq-canon/sparq-core 0.1.5. That's unavoidable, since the crate takes sparq-canon by path and CI builds with --locked. The lock's hash is pinned in zk/native-composition/vendor-support/wasmer/lock-delta.json, so the verifier rejects it as an unreviewed native lock change. The fix is to re-record candidate_lock_sha256 and since_chain_root with the verifier's own lock_delta(). Because that is a supply-chain pin, it waits on a maintainer's OK before it goes into this PR. 30c8c98 already reverts an unintended edit to the #6647 chain-root lock.


Generated by Claude Code

@jeswr

jeswr commented Oct 9, 2026

Copy link
Copy Markdown
Collaborator Author

🔎 Codex reviewer — gpt-6.1-sol

Automated review by the Codex reviewer (OpenAI gpt-6.1-sol via Codex CLI) of head 0ecd67d86375. Scope: correctness, security, soundness and design; style nits omitted. A new head gets a fresh review.

Findings

  1. [medium] ODRL entry discloses bypass conditions before the advisory — CHANGELOG.md:23
    The requested pre-advisory entry identifies unsupported prohibition constraints and shapes that previously allowed a matching permission to grant access, then lists additional authorization failures. This exposes specific bypass conditions rather than providing neutral release wording.
    Replace it with a brief statement that ODRL evaluation and authorization bridging were hardened; reserve the details for the published advisory.

  2. [low] Release archives retain install commands for the abandoned version — README.md:50
    The 0.1.5 release archives copy this README, whose installation commands still pin Rust, Python, and npm packages to 0.1.4. Under the documented fix-forward plan, those 0.1.4 packages will remain unpublished, so the advertised installation commands fail even after 0.1.5 succeeds. The book also includes this block.
    Update the shared installation block to 0.1.5 while retaining its publication caveat.

Requested checks

  1. Version consistency: Workspace release crates, Python’s dynamic version, desktop metadata, npm manifests, and npm workspace lock records agree on 0.1.5. No stale 0.1.4 path requirements or sparq-* lock records remain. The independently versioned parser fork remains 0.4.6 as documented. Repository-wide search found the stale README installation block noted above.
  2. Lockfile scope: Pass. Across all project lockfiles, 26 changed files contain only 194 sparq-* version substitutions; the remaining project lockfile needed no change. No third-party versions or checksums changed. package-lock.json changes only four workspace versions.
  3. Changelog and runbook: The ci(release): text-mode sha256 records so Windows archive digests pass the collector #6717 entry and fix-forward note are present. The ODRL entry fails the requested neutral wording check.
  4. Archive-digest regression: None found. Text-mode digest production remains intact, and archive and GUI names consistently derive from the release tag. These edits introduce no format or naming mismatch.

Verdict: Request changes to the changelog disclosure and bundled installation instructions before merging.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0184oZyLYQNVPp7HYBAr6uYz

jeswr commented Oct 9, 2026

Copy link
Copy Markdown
Collaborator Author

"GUI build + clippy (arm64-linux, advisory)" fails at Test (ODRL policy tool, native lane). The cause is not in this PR, which touches no GUI or policy code. It comes from #6734 on main, and gui.yml hasn't run on main since that merged because of its path filter. The GUI's ODRL preview (gui/src-tauri/src/odrl.rs) materializes the policy through PodStore::materialize_odrl_policy. Since #6734, the bridge stores a grant only for a permission whose assignee is exactly the requesting party, and only when the policy has no prohibitions. I reproduced this against the sparq-solid bridge with the GUI test's own policy (alice prohibited on ex:secret). Every materialize call returns granted=false, so both alice's and bob's gated panes come back empty, and prohibition_flips_a_previously_visible_graph_to_hidden fails. This fails closed, but the panel's gated preview is now empty for most policies. No fix exists yet. I've passed it to the owner of the policy work rather than widening this PR.


Generated by Claude Code

@jeswr

jeswr commented Oct 9, 2026

Copy link
Copy Markdown
Collaborator Author

🔎 Codex reviewer — gpt-6.1-sol

Automated review by the Codex reviewer (OpenAI gpt-6.1-sol via Codex CLI) of head b528c74b5fea. Scope: correctness, security, soundness and design; style nits omitted. A new head gets a fresh review.

Findings

No correctness, security, soundness or design problems found.

Requested checks

  1. Version consistency: Workspace, desktop, public npm packages, Python’s inherited version and path-dependency requirements agree on 0.1.5. All 27 Cargo.lock files were checked; 25 needed changes, two did not. Repository-wide 0.1.4 matches contain no stale release inputs; remaining references are historical documentation, pinned examples, tests or unrelated dependency versions.
  2. Lockfile scope: Cargo.lock edits change only 192 sparq-* version records. No third-party versions, checksums or dependencies changed. package-lock.json changes only the four intended workspace versions.
  3. Changelog and prior findings: Both prior findings are closed. README install commands use 0.1.5. CHANGELOG includes ci(release): text-mode sha256 records so Windows archive digests pass the collector #6717 and the neutral fix(policy): three-valued constraint evaluation; prohibitions fire unless definitely withdrawn #6734/fix(solid): route every ODRL bridge grant through sparq-policy's decision #6737 line, with no bypass condition or exploit detail. The latest commit changes only CHANGELOG.md and README.md. The runbook includes the fix-forward note.
  4. Archive digests: No regression found. Text-mode digest generation remains intact, and the collector’s filename predicate accepts all four blocking v0.1.5 archive names. The release workflow itself was not executed.

Verdict: Safe to merge as is once the stated release cadence window opens.

@jeswr

jeswr commented Oct 9, 2026

Copy link
Copy Markdown
Collaborator Author

🔎 Codex reviewer — gpt-6.1-sol

Automated review by the Codex reviewer (OpenAI gpt-6.1-sol via Codex CLI) of head 95d1b8d299dc. Scope: correctness, security, soundness and design; style nits omitted. A new head gets a fresh review.

Findings

No correctness, security, soundness or design problems found.

Requested checks

  1. The merge preserves main’s changes without conflicting with the release bump. Versioned sparq release dependencies are at 0.1.5, including the new sparq-core dev-dependency. Lockfile changes preserve external dependencies; the intentional ZK chain-root pin remains unchanged. Locked offline metadata checks passed for seven workspaces.
  2. The CHANGELOG entries accurately describe the changes in neutral terms, without exploit details.
  3. fix(solid): authorize update WHERE sources against the read view #6763 includes the read-access change and multi-operation migration guidance. fix(gui): show the ODRL policy's own per-request verdict in the preview #6760 documents its preview semantics in the UI and GUI README; no additional migration or release-note requirement was found. The expected ZK CI failure is excluded as requested.

Verdict: Safe to merge as the v0.1.5 fix-forward, subject to the documented release cadence.

jeswr commented Oct 9, 2026

Copy link
Copy Markdown
Collaborator Author

Handoff for whoever merges this PR. It is Codex-clean at 95d1b8d.

  • Earliest merge time: 21:10 UTC on 2026-10-09 (24h release-cadence guard). Merging lets release-plz tag v0.1.5.
  • ZK native lock pin: "native credential and circuit composition" stays red until a maintainer decides. The fix re-records candidate_lock_sha256 and since_chain_root in zk/native-composition/vendor-support/wasmer/lock-delta.json using the verifier's lock_delta(). The only change in that lock is sparq-canon and sparq-core moving from 0.1.4 to 0.1.5. It isn't a required check.
  • CHANGELOG date: if this merges after 2026-10-09, update the ## [0.1.5] - 2026-10-09 heading.
  • Last-minute fixes: if another fix lands on main before the merge, add its neutral CHANGELOG line.

Generated by Claude Code

@jeswr

jeswr commented Oct 10, 2026

Copy link
Copy Markdown
Collaborator Author

🔎 Codex reviewer — gpt-6.1-sol

Automated review by the Codex reviewer (OpenAI gpt-6.1-sol via Codex CLI) of head 34a33520c3c7. Scope: correctness, security, soundness and design; style nits omitted. A new head gets a fresh review.

Findings

  1. [low] Release notes omit compatibility-relevant changes — CHANGELOG.md:10
    The v0.1.5 section does not cover several user-visible changes since v0.1.4. For example, fix(reason): stratify N3 negation-as-failure #6705 makes previously accepted cyclic N3 programs return errors, refactor(serialize): JSON-LD compact writer delegates to sparq-jsonld #6674 changes compact JSON-LD document shapes, and refactor(serialize): JSON-LD framing writer delegates to sparq-jsonld #6727 removes named-graph wrappers from framed matches. Users upgrading against these behaviors receive no migration notice.
    Add neutral entries for the missing behavioral changes listed below, distinguishing research prototypes from shipped runtime features.

Requested checks

  1. Three new entries: fix(solid): a rule change whose view cannot be rebuilt fails closed #6742, fix(odrl): match collection-target rules to their members on the server lane and LWS gate #6773 and feat(solid): evaluate attached ODRL policies per request through decide #6759 accurately describe implemented behavior and contain no security/advisory wording. The fix(solid): a rule change whose view cannot be rebuilt fails closed #6742 entry describes the failure fallback correctly; its normal path also validates rule changes before committing and rejects unmaterializable changes without altering the store. The date is correctly set to 2026-10-10.

  2. Changelog coverage: Incomplete. Comparing the v0.1.4 tag with the checked-out main history identifies these missing user-visible changes:

    Area Missing coverage
    JSON-LD refactor(serialize): JSON-LD compact writer delegates to sparq-jsonld #6674 compaction shapes/context handling; refactor(serialize): JSON-LD framing writer delegates to sparq-jsonld #6727 framing across merged graph nodes
    Reasoning fix(reason): name @forAll universals by full IRI; pass_all writes them exactly or refuses #6701 universal identity, exact serialization and proof APIs; fix(reason): stratify N3 negation-as-failure #6705 negation stratification/refusals; fix(reason/n3): iteration bound (configurable ClosureLimits) for non-terminating forward closures, not a memory bound #6769 configurable closure limits; fix(reason/n3): XPath numeric type promotion for math: comparisons (#6745) #6772 numeric comparison promotion; fix(reason): RDFS reaches the fixpoint on meta schemas (#5090) #6736 meta-schema fixpoints, incremental updates and provenance
    Parsing and evaluation fix: issue batch 5 (core and reason) #6723 N-Triples/N-Quads grammar enforcement; fix(core): N-Triples language tags are well-formed BCP47 with an exact ltr/rtl direction #6740 language-tag validation; fix(core,engine): xsd:dateTimeStamp without a timezone is ill-formed #6725 timezone-required dateTimeStamp; fix(core,engine): accept XSD 1.1 year zero #6747 year zero; fix(engine): order integers and decimals beyond i128 by value #6697 large-number ordering; fix(engine): ROUND keeps a negative zero; retire the xpath oracle divergence #6703 negative-zero ROUND; fix(engine): CONSTRUCT and DESCRIBE go through PreparedQuery and honour BASE #6677 CONSTRUCT/DESCRIBE preparation and BASE handling; fix(engine): the budget bounds CONSTRUCT/DESCRIBE N-Triples serialisation #6714 serialization budgets
    Canonicalization and SHACL fix(canon): label-independent tie-break for tied RDFC-1.0 N-degree hashes #6645 canonicalization tie-breaking; fix(canon): enumerate rdf12 HNDQ permutations lazily under a budget #6702 bounded permutation enumeration; fix(shacl): compare dates and dateTimes with the shared exact temporal comparator #6733 exact temporal comparisons
    HTTP, LWS and MCP fix(sparq-server): stream CSV/TSV/XML SELECT bodies instead of rendering them whole #6708 streamed SELECT serialization; feat(lws): serve LWS 1.0 resources, containers and preconditions #6728 experimental LWS resource/container/precondition surface; fix(lws): durable intents put back changes a process stop cut short #6767 durable recovery; fix(mcp): filter container_list by read access, cap stdio request size, add query_timeout_ms #6700 read-scoped listings, request limits and query timeout configuration
    JS, forms and GUI fix(sparq-client): validate term parts in the shared N-Triples writer #6716 term validation; fix(js): export ./wasm/* subpath; port _copy:wasm to Node #6739 WASM subpath exports and portable packaging; fix(sparq-forms): fail closed on unsafe update terms; fixtures name their goldens #6707 rejected malformed update terms; fix(gui): refuse UPDATE in Graph view, record real web-batch import bytes, share abbreviateIri #6704 Graph-view UPDATE refusal; fix(gui,site): escape full-text search terms and SHACL report strings with the shared writer #6741 search/report escaping; fix(gui): show the ODRL policy's own per-request verdict in the preview #6760 request-specific ODRL preview
    Site and WASM fix(site): make horizontally scrolling tables and code focusable #6777 keyboard-scrollable content; fix(wasm): re-apply the size override to the renamed spargebra package #6782 restored parser size optimization
    Research interfaces feat(zk): land the stacked ZK and credential-query work (#6497 to #6594) #6647 ZK/credential-query additions beyond its already-covered engine changes; feat(zk): revealed signature mode for the zkVM eddsa-rdfc-2022 relation #6787 revealed-signature mode; feat(zk): eddsa-sha256-merkle-2026 Merkle-root cryptosuite and spec #6789 Merkle-root cryptosuite/specification; feat(proof-methods): disclosed-credential re-evaluation method and Q1-Q5 baseline #6788 disclosed re-evaluation; feat(proof-methods): QuickSilver prover for the zk/compose ACIR circuits #6790 QuickSilver tooling; feat(proof-methods): TEE attestation method on AWS Nitro Enclaves #6794 Nitro attestation prototype
    Dependencies fix(deps): patch RustSec advisories in root and side lockfiles #6694 Rust dependency fixes and build(deps): override basic-ftp to 6.2.2 for a high advisory #6751 npm dependency fix; fix(deps): patch npm security advisories; solid-server requires fastify >=5.12.5 #6692’s Fastify requirement is already covered

    Within fix(site): make horizontally scrolling tables and code focusable #6777–ci(bench): raise the wasm_bundle_bytes floor to the measured post-#6782 size #6783, ci(fuzz): fit the nightly sweep inside the job timeout #6778/test(site): pin a Windows UA in the download-page spec #6780/fix(supply-chain): drop the resolved basic-ftp entry from the npm advisory record #6781/ci(bench): raise the wasm_bundle_bytes floor to the measured post-#6782 size #6783 are CI, test or advisory-record maintenance; fix(reason): keep base blank nodes apart from parser blank labels #6779 is absent from this history. Within docs(specs): zero-knowledge SPARQL answer data model #6786–ci(supply-chain): gate the detached proof-methods workspace #6797, only feat(zk): revealed signature mode for the zkVM eddsa-rdfc-2022 relation #6787/feat(proof-methods): disclosed-credential re-evaluation method and Q1-Q5 baseline #6788/feat(zk): eddsa-sha256-merkle-2026 Merkle-root cryptosuite and spec #6789/feat(proof-methods): QuickSilver prover for the zk/compose ACIR circuits #6790/feat(proof-methods): TEE attestation method on AWS Nitro Enclaves #6794 are merged here.

  3. Versions: Pass. No stale sparq 0.1.4 records remain except the intentionally pinned chain-root lock. Cargo manifests, desktop metadata, npm manifests and npm workspace lock records agree on 0.1.5; Python derives its version from Cargo. All 196 changed Cargo lock records are path-package version bumps, with external dependencies unchanged.

  4. Main merge and delta: Pass. Incoming main files were preserved exactly. The two overlapping files contain only expected version edits. The subsequent commit changes only the changelog and four proof-methods lock versions; no conflict-resolution drift was found.

Verdict: Complete the missing release notes before merging; the version bump and main merge otherwise pass review.

jeswr commented Oct 10, 2026

Copy link
Copy Markdown
Collaborator Author

On the low finding (CHANGELOG coverage): I'm leaving this PR as is for now. Filling in the full v0.1.4..v0.1.5 behaviour-change list is a separate docs pass. The table in the review is a good checklist for whoever cuts the release, and the version, merge and three new-entry checks all passed.


Generated by Claude Code

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0184oZyLYQNVPp7HYBAr6uYz
@jeswr

jeswr commented Oct 10, 2026

Copy link
Copy Markdown
Collaborator Author

🔎 Codex reviewer — gpt-6.1-sol

Automated review by the Codex reviewer (OpenAI gpt-6.1-sol via Codex CLI) of head 3121f24617ec. Scope: correctness, security, soundness and design; style nits omitted. A new head gets a fresh review.

Findings

  1. [low] Closure-limit note overstates protection against memory exhaustion — CHANGELOG.md:40
    ClosureLimits bounds rounds and fact counts, not allocated bytes. A recursive string:concatenation rule that doubles a string each round can exhaust memory after only dozens of rounds and facts, before either default limit triggers. The merged fix(reason/n3): iteration bound (configurable ClosureLimits) for non-terminating forward closures, not a memory bound #6769 implementation explicitly documents this limitation in n3/bounded.rs, tracked by N3 forward closure has no memory bound: term growth (e.g. string doubling) can exhaust memory #6771. Describing it as stopping “instead of exhausting memory” gives callers an unsupported resource-safety guarantee.

    Describe the configurable iteration/fact limits and remove the memory-exhaustion guarantee, or state the growing-term limitation.

Requested checks

Verdict: Correct the closure-limit claim before merging the v0.1.5 release PR.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0184oZyLYQNVPp7HYBAr6uYz
@jeswr

jeswr commented Oct 10, 2026

Copy link
Copy Markdown
Collaborator Author

🔎 Codex reviewer — gpt-6.1-sol

Automated review by the Codex reviewer (OpenAI gpt-6.1-sol via Codex CLI) of head 55d714777992. Scope: correctness, security, soundness and design; style nits omitted. A new head gets a fresh review.

Findings

No correctness, security, soundness or design problems found.

Requested checks

Verdict: The v0.1.5 fix-forward PR is safe to merge as is.

The bump moves sparq-canon and sparq-core to 0.1.5 in the native lock. Re-record
candidate_lock_sha256 and since_chain_root with verify.py's lock_delta(); no
third-party package changes.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0184oZyLYQNVPp7HYBAr6uYz
…eview

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0184oZyLYQNVPp7HYBAr6uYz
@jeswr

jeswr commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator Author

🔎 Codex reviewer — gpt-6.1-sol

Automated review by the Codex reviewer (OpenAI gpt-6.1-sol via Codex CLI) of head 9a1e44adb226. Scope: correctness, security, soundness and design; style nits omitted. A new head gets a fresh review.

Findings

No correctness, security, soundness or design problems found.

Requested checks

  1. Merge and versions: 73e6f0f7 has no conflict-resolution drift. Both overlapping lockfiles exactly preserve main’s changes plus the release version bumps. No active sparq 0.1.4 package record remains outside the intentionally pinned chain-root lock.

  2. Wasmer lock derivation: verify.py uses zk/native-composition/Cargo.lock. Its computed SHA-256 is d4415e5e7004ca90746851e44e82f3c258b674c3fc806b54f9d41a07d886dfe7, exactly matching candidate_lock_sha256. Running its lock_delta() produces exactly the recorded since_chain_root. The release-only difference from main is two removed 0.1.4 records and two added 0.1.5 records for sparq-canon and sparq-core; no third-party record changed. The full chain-root delta also contains earlier dependency changes, unchanged from the previous review. The chain-root lock, SHA constant, and other native pin-chain files are untouched.

  3. Changelog: Compared with main since v0.1.4 and 55d71477, all eight newly merged functional/research PRs are accurately covered: feat(lws): PATCH data resources with JSON Patch #6805, feat(lws): edit linksets with JSON Patch #6806, feat(lws): access grants and access requests #6730, feat(lws): notifications and subscriptions #6731, feat(zk): paper measurement harness, V5 coverage manifest and compose signature modes #6791, docs(zk): executor evidence records for the paper's V5 measurements #6793, feat(proof-methods): hand-written ACIR prototype for the integer literal opening #6803, and fix(zk): V5 host rejects DESCRIBE and dataset clauses; spec security corrections #6792. No previous PR references were removed; omitting CI-only ci(supply-chain): gate the detached proof-methods workspace #6797 is appropriate. The private-advisory wording remains neutral, with no added security/advisory language or exploit detail.

Verdict: The PR is safe to merge as is for v0.1.5.

@jeswr
jeswr marked this pull request as ready for review October 11, 2026 08:59
@jeswr
jeswr merged commit e6b65b6 into main Oct 11, 2026
60 of 72 checks passed
@jeswr
jeswr deleted the claude/release-v0.1.5 branch October 11, 2026 11:01
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.

2 participants