Skip to content

chore(main): release 0.8.0 - #307

Open
github-actions[bot] wants to merge 2 commits into
mainfrom
release-please--branches--main--components--gitlawb-node
Open

github-actions[bot] wants to merge 2 commits into
mainfrom
release-please--branches--main--components--gitlawb-node

Conversation

@github-actions

@github-actions github-actions Bot commented Aug 10, 2026 •

Copy link
Copy Markdown
Contributor

🤖 I have created a release beep boop

0.8.0 (2026-11-06)

⚠ BREAKING CHANGES

  • node: git-receive-pack now rejects a push whose authenticated DID is not the repo owner, returning 403 before any ref update is applied. Delegated and CI keys count as non-owners: a UCAN git/push capability is verified but not yet honored for authorization, so an agent pushing under its own DID cannot push while this is on. Set GITLAWB_ENFORCE_OWNER_PUSH=false during a rolling upgrade, or have automation push as the repo owner, until scoped collaborator / UCAN-delegated push rights land.

Features

  • core: carry the resumed candidate's identity in the scan token (2656718)
  • node,git: cap concurrent served git ops with a 503 load-shed (#62) (5981257)

Bug Fixes

  • attest: use strict Ed25519 verification with regression test (1fcbbbd)
  • ci: add tested release tag resolver (1b65f70)
  • ci: recognize namespaced test attributes in pr-triage's needs-tests check (1989fcc)
  • ci: reject unsafe release dispatch tags (7b365b0)
  • ci: reject unsafe release dispatch tags (0b990d6)
  • core: cap the blinded recipient scan in open_blob (#419) (#440) (2450bbd)
  • core: count distinct signer DIDs in certificate threshold check (3993fd1)
  • core: Count distinct signer DIDs in certificate threshold check (50d3cbb)
  • core: enforce strict RFC 8032 Ed25519 signature verification (425ebf4)
  • core: put the redirect predicate behind a feature so core stays lean (c82a70a)
  • core: refuse a redirect that rewrites the signed request-target (5c0d6f3)
  • core: reject small-order Ed25519 keys at DID resolution and before X25519 (#314) (86c544a)
  • core: share the origin-scoped redirect rule with the git helper (ba44a01)
  • core: use strict Ed25519 signature verification (a6c13be)
  • deps: bump aws-smithy-json to 0.62.7 (GHSA-8ffr-xgwf-xj56) (#516) (151d688)
  • deps: bump follow-redirects and override ws in scripts/ (#525) (a23c81d)
  • deps: bump libp2p to pick up hickory 0.26 and serde_with 3.22 (#518) (623b600), closes #76
  • deps: resolve cargo audit failures on main (#514) (4d024e0)
  • git-remote: abort fetch on EOF without POSTing; harden the real-git test harness (#192) (1cb930c)
  • git-remote: drive multi-round fetch as a v0 stateless-RPC client loop (#117) (5fdf155)
  • git-remote: drive multi-round fetch as a v0 stateless-RPC client loop (#117) (a64b141)
  • git-remote: normalize the shim's accepted socket to blocking (10e0840)
  • git-remote: normalize the shim's accepted socket to blocking (#192) (8d7f95f)
  • git-remote: reject malformed pkt-line length headers instead of flushing (8c04043)
  • git-remote: skip content-free flush rounds in the fetch loop (#117) (68ba492)
  • git-remote: stop waiting on EOF for a delete-only push (#442) (c2e175d)
  • gl: accept the resume token the incomplete-scan message tells you to pass (181f617)
  • gl: assert 404 verdict and harden transport error handling in whoami (#220) (a329174)
  • gl: assert whoami 404 verdict and preserve transport error cause (#220) (b4007a5)
  • gl: close two completeness-gate escapes; surface the node's error key (6b2c53b)
  • gl: follow scan continuations in gl ipfs get, bounded three ways (9a8d190)
  • gl: only report registered: false on 404 in whoami (#220) (21c74c6)
  • gl: only report registered: false on 404 in whoami (#220) (fd78cfa)
  • gl: only report registered: false on 404 in whoami (#220) (3cc15cf)
  • gl: only report registered: false on 404 in whoami (#220) (16cc3b3)
  • gl: only report registered: false on 404 in whoami (#220) (3f41df5)
  • gl: only report registered: false on 404 in whoami (#220) (b0e5cc0)
  • gl: only report registered: false on 404 in whoami (#220) (12bc759)
  • gl: only report registered: false on 404 in whoami (#220) (10e3492)
  • gl: only report registered: false on 404 in whoami (#220) (c10f2ca)
  • gl: only report registered: false on 404 in whoami (#220) (3add535)
  • gl: only report registered: false on 404 in whoami (#220) (fdd1103)
  • gl: pass the mirror temp path to git as an OS string (#434) (df87b15)
  • gl: read whoami error bodies through CappedBody.text (bfc44f9)
  • gl: read whoami error bodies through CappedBody.text (4725146)
  • gl: report why the node-DID comparison was skipped in cert show (6b2c53b)
  • gl: require non-empty error message and use ephemeral port in whoami tests (#220) (a27a267)
  • gl: sanitize full transport error chain in whoami, remove raw error attachment (#220) (39ce655)
  • gl: status-check the client read/write surfaces so a node denial surfaces as an error, not a fake result (#123) (#186) (6b2c53b)
  • gl: stop carrying request signatures to a host the node redirected us to (de3f230)
  • icaptcha: return unsolved instead of blocking or overflowing (#444) (5479fd5)
  • infra: serialize the upgrade and write compose through a unique temp path (888fab6)
  • ipfs: page the legacy CID scan instead of materializing every repo (4985e38)
  • node,infra,macos: make the owner-push opt-out reach every launch path (1f0d9ff)
  • node: ANS-104 codec and recovery policy types (#26 split 2/4) (#524) (2c341f7)
  • node: authenticate gossip ref-update events before writing them (#325) (9bda2e1)
  • node: bind a peer row to its DID so only its keyholder can repoint it (#273) (8d38043)
  • node: bound legacy readiness fallback (5af14c2)
  • node: bound peer failure tracking (74f7554)
  • node: bound replay of authenticated gossip ref-update events (#334) (206e082)
  • node: bound the fruitless reads one sweep run will spend (e4aaae8)
  • node: bound the legacy CID scan and let the caller carry its position (22f4db9)
  • node: bound the legacy scan's query by the remaining row budget (21e6873)
  • node: bound the legacy-repair read by the pin batch deadline (ea2219b)
  • node: bound the pin loops' DB work by the batch deadline, both lanes (9984e08)
  • node: bound the pre-walk CID resolve on its own short budget (0d7711c)
  • node: bound the request body the signature middleware buffers before it verifies (#262) (288ad92)
  • node: bring the Pinata pin path back into lockstep with the Kubo one (4681f54)
  • node: budget provenance and fallback walks separately (ae96ffa)
  • node: carry discovery onto the per-(oid, repo) incompleteness marker (bd0bef1)
  • node: charge discovery's probes against the per-run read budget (bc20236)
  • node: clamp every admission-held DB await in the CID resolver (bad82b3)
  • node: close review findings on the owner-push default (2f0174c)
  • node: close three host-class gaps in the public-URL gate (#346) (76ca04f)
  • node: count a completed fetch once per fetch, not per stateless-RPC POST (1c690c1)
  • node: count fetch completion from the response outcome, not the request (5a5d4e1)
  • node: drop withheld-subtree trees from the replication pin set (#382) (19a7ce2)
  • node: enforce owner-only push by default (cdbda19)
  • node: Escape LIKE metacharacters in certificate prefix search (eeafa1f)
  • node: Escape LIKE wildcards in certificate prefix search (96d8123)
  • node: fail pin_git_object when the add response carries no Hash (#528) (47c6e6c)
  • node: fence a repo publish on the write attempt that owns it (#285) (ed76adf)
  • node: gate GET /ipfs/{cid} tree objects so a withheld subtree's structure can't leak (#135) (21f8cb6)
  • node: gate replica register/unregister on repo read visibility (#445) (0303222)
  • node: gate two Unix-only tests so the crate compiles on Windows (5a7a77b), closes #228
  • node: give each discovery row its own slice of the pass budget (22560b0)
  • node: harden peer readiness state (6bd8f41)
  • node: hold fork to the same repo-name rules as every other creation route (#412) (fc87586)
  • node: make metrics::init race-safe with Once (c45ec96)
  • node: make the pin-source incompleteness marker per (object, repo) (5575da4)
  • node: map ipfs/arweave DB outages to 503 via bare ? (#251) (0e2328b)
  • node: map ipfs/arweave DB outages to 503 via bare ? (#251) (c29a91a)
  • node: mint a continuation when a ceiling stops the /ipfs scan mid-page (69cfbd4)
  • node: never hand back a continuation that made no progress (76f6300)
  • node: opaque AppError::Internal and AppError::Db HTTP bodies (#226) (241b366)
  • node: opaque AppError::Internal and AppError::Db HTTP bodies (#226) (d192028)
  • node: opaque GraphQL DB error messages (#250) (c10ccf1)
  • node: order the CID candidate list so it cannot depend on heap order (366b599)
  • node: persist the libp2p identity instead of deriving it from the node DID (#324) (c301a68)
  • node: port discovery's candidate load onto the paged repo query (4c665fb)
  • node: preserve legacy peer compatibility (547f9ae)
  • node: reconcile public-read messaging with per-repo enforcement (#439) (0366f18)
  • node: record a discovered source and its marker in one commit (9babb5e)
  • node: reject revision syntax in issue ids and drop service passthrough (#521) (421f03a)
  • node: repair source-less legacy pins by bounded additive discovery (d88c0c7)
  • node: require Content-Digest on a signed request (#306) (189aad9)
  • node: resolve issue ids from git refnames, not request input (#526) (3063719)
  • node: resume the /ipfs scan per candidate so a starved one is not skipped (d0635d9)
  • node: rewind the pin repair sweep cursor on every completed walk (1b44b12)
  • node: rotate discovery candidates across traversals (4fdfa1c)
  • node: scope bounty aggregates to anonymously-listable repos (#477) (#527) (317a155)
  • node: scope the refs listing by the canonical repo slug (#388) (131bb95)
  • node: size the ipfs work floor for provenance walks plus one full search (dc5daa1)
  • node: stop reporting a Kubo pin whose DB record never landed (f839fb9)
  • node: stop the /ipfs size probe reporting a fault as a missing object (ed6355e)
  • node: use readiness for peer liveness (225644a)
  • node: use readiness for peer liveness (1a841a9)
  • node: validate git branch refs to close option injection (#379) (6233bd9)
  • node: validate ref-update SHAs are hex, not just length 40 (#433) (911be4d)
  • release: bump icaptcha-client with the rest of the workspace (6668525)
  • repo_store: use SHA-256 for stable advisory-lock key (#210) (c380f9c)
  • repo_store: use SHA-256 for stable advisory-lock key (#210) (89e10d0)
  • review: assert the read-timeout postcondition and drop the socket clone (4d9bd5a)
  • review: bound the probe's channel waits and stop overstating the handshake (d4e5ecf)
  • review: bound token key, rule bytes, and the discovery load (e6cfb58)
  • review: keep the resume token on every terminal that still holds one (8c39cfd)
  • review: make the coupled sites findable and pin two more properties (a7e8e35)
  • review: make the LIKE escape independent of the SQL parser mode (1d3987b), closes #319
  • review: mint a continuation at every ceiling and widen the token (342dd48)
  • test: match SHA-256 advisory-lock key in receive-pack deadline test (c68e1b0)
  • whoami: update registered status handling on 404 response (75b0df8)

This PR was generated with Release Please. See documentation.

@github-actions
github-actions Bot requested a review from beardthelion as a code owner August 10, 2026 02:00
@beardthelion beardthelion added crate:attest gitlawb-attest — attestation and verification crate:core gitlawb-core — identity, certs, encrypt, DID/UCAN crate:git-remote git-remote-gitlawb — the git remote helper crate:gl gl — the contributor CLI crate:node gitlawb-node — the serving node and REST API labels Aug 10, 2026
@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--gitlawb-node branch 9 times, most recently from 1ad36b8 to bd90b46 Compare August 10, 2026 13:44
@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--gitlawb-node branch 6 times, most recently from 552af21 to 0e19676 Compare August 16, 2026 13:41
@euxarist

Copy link
Copy Markdown
Contributor

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Aug 22, 2026 •

Copy link
Copy Markdown
Contributor
⚠️ Action not completed

Review rate limited.

@coderabbitai

coderabbitai Bot commented Aug 22, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: ccd33789-13f9-4d89-b4d3-6bff99af898e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--gitlawb-node branch 3 times, most recently from c2ded5b to 3810499 Compare August 26, 2026 05:33

@euxarist euxarist left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Mechanically this is clean: pure version bumps (0.7.1 to 0.8.0 across the manifests and lockfile, including the long-owed icaptcha-client alignment), a generated changelog, no workflow edits, no checkout or token changes, CI green, and main has not moved past the changelogged commit. No migration-number conflicts with the in-flight PR stacks (those claim v27+; this touches none).

The question I want on the record before this is merged is a release-risk one: v0.8.0 would ship with eight open sev:high issues unfixed on main: #469 (uncapped anonymous Kademlia resolution), #470 (unbounded ref-update notify fields), #471 (encrypted-blob serving with no size cap), #484 (anonymous unbounded PR diffs), #485 (stats loads the full inventory per request), #487 (Tigris cold-acquire RAM buffering), #491 (silent identity regeneration), and #492 (DID-control not proven at registration). It also carries a BREAKING CHANGE (owner-only push default). None of these have open fix PRs except via the #462-#466 stack. If shipping them in 0.8.0 is an accepted risk, fine; if not, this release is worth holding until the in-flight bounds work lands. Whoever merges should make that call explicitly rather than by default.

@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--gitlawb-node branch 18 times, most recently from 9c4cb35 to 7f7e2b0 Compare November 6, 2026 03:06
@github-actions
github-actions Bot force-pushed the release-please--branches--main--components--gitlawb-node branch from e54895e to 91bc34c Compare November 6, 2026 06:34

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autorelease: pending crate:attest gitlawb-attest — attestation and verification crate:core gitlawb-core — identity, certs, encrypt, DID/UCAN crate:git-remote git-remote-gitlawb — the git remote helper crate:gl gl — the contributor CLI crate:node gitlawb-node — the serving node and REST API

Projects

None yet

2 participants