Commit Graph

12659 Commits

Author SHA1 Message Date
abuckit 616eeea9a2 rename install-rpm.sh to install-linux.sh
The script installs rpm, deb, and apk packages, so the rpm-specific name
was misleading. install-linux.sh reflects its actual Linux-wide scope.
2026-06-18 17:58:02 -04:00
abuckit 3fab64f1bf feat: add install-rpm.sh native-package installer
Add packaging/install-rpm.sh, a POSIX sh helper served from gh-pages that
detects the host package manager (dnf/yum/zypper, apt/apt-get/dpkg, or apk),
downloads the matching .rpm/.deb/.apk for the latest stable release, verifies
its published SHA-256 checksum, and prints the install command to run. It does
not invoke the package manager itself.

Wire the update-gh-pages release job to check out source and publish the
script to pages/install-rpm.sh so it ships at
https://buckit-io.github.io/buckit/install-rpm.sh during a normal release.
2026-06-18 17:53:42 -04:00
abuckit 067d77f2bf Merge pull request #8 from buckit-io/security/dependabot-12
fix: resolve high dependabot alerts
2026-06-17 11:01:02 -04:00
abuckit ab4a101ab0 fix: resolve dependabot alerts 2026-06-17 09:18:34 -04:00
abuckit 43e5cf2c85 ci: resolve multipart compose hosts on github runner 2026-06-16 18:38:36 -04:00
abuckit 3178c75874 ci: build mint image from local binary 2026-06-16 15:04:19 -04:00
abuckit c179cd46ed ci: run mint tests on github-hosted runner 2026-06-16 14:58:32 -04:00
abuckit 17a8524083 Merge pull request #2 from buckit-io/feature/single-trip-get-phase1-pr
Add FastOpen single-trip GET path
2026-06-16 14:46:23 -04:00
abuckit fcdfe06d32 test: stabilize truncated part resiliency heal 2026-06-16 13:22:23 -04:00
abuckit 518c532960 test: cover FastOpen encryption and metrics 2026-06-15 22:53:50 -04:00
abuckit 7672c1703a chore: remove duplicate FastOpen metrics 2026-06-15 22:36:26 -04:00
abuckit 67392ba3f4 fix: bound FastOpen frame container counts 2026-06-14 19:03:55 -04:00
abuckit e701c06571 ci: fix lint and verifier workflow failures 2026-06-14 13:57:47 -04:00
abuckit 3d15bdb1a1 fix: avoid pooling update binary buffers 2026-06-14 11:38:43 -04:00
abuckit a9577221f3 ci: reenable verifiers for test targets 2026-06-14 10:59:53 -04:00
abuckit 47a9099dc8 fix: return owned update binary buffers 2026-06-14 10:49:29 -04:00
abuckit ea034f6390 fix: clone pooled pathJoin results 2026-06-14 10:33:39 -04:00
abuckit de269229bc ci: stabilize Go and lint workflow tooling 2026-06-13 22:55:34 -04:00
abuckit e212adacb4 Drop tmp artifacts from PR 2026-06-13 21:44:57 -04:00
abuckit 0fe7bd110a Align FastOpen design doc and trim docs 2026-06-13 21:36:51 -04:00
abuckit 94e4b8ab7b Merge branch 'master' into feature/single-trip-get-phase1-pr 2026-06-13 21:25:10 -04:00
abuckit a4831d473b Remove testing directory 2026-06-13 21:24:44 -04:00
abuckit 46cd783f2f Drop testing from PR branch 2026-06-13 21:24:44 -04:00
abuckit 0740a461f7 Add FastOpen timing metrics 2026-06-13 21:05:23 -04:00
abuckit 9f6f18c1b1 test: cover deferred FastOpen decode failures 2026-06-11 09:46:13 -04:00
abuckit 4cf193ff7c feat: profile FastOpen body-path timing 2026-06-11 09:46:09 -04:00
abuckit d52d9d5865 chore: remove FastGet prototype path 2026-06-10 11:37:21 -04:00
abuckit b09d64fe30 feat: add FastOpen observability 2026-06-10 10:44:21 -04:00
abuckit 91526a9788 test: expand FastOpen GET golden coverage 2026-06-10 09:55:15 -04:00
abuckit 6344ff1289 feat: add FastOpen lazy replacement 2026-06-09 23:42:18 -04:00
abuckit dbd22c0b7d feat: add FastOpen GET landing path 2026-06-09 21:13:42 -04:00
abuckit e3b3246c6d feat: add FastOpen storage transport 2026-06-09 19:20:13 -04:00
abuckit 831b5e8b5b feat: add disk-local FastOpen part stream 2026-06-09 17:18:22 -04:00
abuckit f5939780b7 feat: add FastOpen frame foundation 2026-06-09 16:57:37 -04:00
abuckit 5d77f36c3c docs: add FastGet phase 1 design plan 2026-06-09 15:48:26 -04:00
abuckit 5d28a361c4 docs: add single-trip benchmark handoff 2026-06-08 14:04:35 -04:00
abuckit e5b0a6f47d perf: stabilize single-trip fast get 2026-06-08 14:04:14 -04:00
abuckit bb8b663c0f docs: record single-trip phase-1 benchmark results
Document the container A/B on the corrected single-pool rig (one 16-drive
EC:4 set, 2 MiB non-inlined objects):

- single-trip proven directly: with xl.meta and the canonical data dir
  deleted on all drives, FAST_GET=1 still serves byte-exact from the shadow
  (multi-pool returned 404).
- cold single-stream TTFB ~26% lower (server-side trace) / ~21% (curl),
  captured paired on the same requests; saturated throughput flat on the
  seek-free loopback medium.
- record the two rig traps (multi-pool xl.meta pre-read; inline cutoff is
  per-shard, so EC:4 inlines everything below ~1.5 MiB).

Design note: the on-disk shadow header should be variable-length with a
self-describing payload so fields can evolve without lockstep; the fixed
1024-byte positional header is a phase-1 shortcut.
2026-06-04 16:00:26 -04:00
abuckit 6d6579cb47 test: wire single-pool cluster for single-trip benchmark
cluster.sh emitted one endpoint arg per node, which brought the rig up as
four independent server pools. Multi-pool GET resolves the owning pool via
getLatestObjectInfoWithIdx (a per-pool xl.meta read) before the set-level
fast path runs, so BUCKIT_FAST_GET=1 still read xl.meta and the single-trip
path was never exercised.

Emit a single pool spanning all nodes (http://node{1...4}:9000/data/...)
so SinglePool() is true and GET dispatches straight to the set, letting the
fast path bypass xl.meta. Regenerated docker-compose.yml reflects the change.
2026-06-04 16:00:26 -04:00
abuckit e0e3955742 test: wire cluster rig for single-trip benchmark 2026-06-04 11:52:04 -04:00
abuckit 87ca27b872 docs: record single-trip smoke validation 2026-06-04 11:09:59 -04:00
abuckit 2807ace9f0 test: isolate single-trip counter assertions 2026-06-04 09:42:22 -04:00
abuckit eed84c8dbe test: allow body in tracking response writer test 2026-06-04 09:33:37 -04:00
abuckit 29982574ef feat: add single-trip GET phase 1 prototype 2026-06-04 09:10:40 -04:00
abuckit ba1e0cad1a test: allow body in tracking response writer test 2026-06-04 08:50:05 -04:00
abuckit f4b729273c docs(kms): pin epoch-key derivation, split MVP vs phase-2 security
Address security review: specify the exact epoch-key derivation scheme
(deterministic KMS MAC, or random-and-wrap) since cloud KMS GenerateDataKey
is random by default and would otherwise make keys unrecoverable. Promote
authenticated metadata binding, basic token scoping, a minimal revocation
path, and bounded historical cache into MVP requirements; keep full replay
protection and coordinated revocation as phase-2. Add the accepted-residual-
risk note and a multi-instance proxy section.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 15:53:44 -04:00
abuckit 88210b94ee docs(kms): revise KES replacement design to keep master key in KMS
Switch the design to a true-HSM model where the master key never leaves
the KMS, unlike KES/MinKMS which load it into memory. The KMS produces an
epoch key per window; bucket and object keys derive locally. Adds the
two-window model (12h epoch + ~15min Buckit cache TTL), corrected near-zero
cost analysis, the bounded-compromise security framing, and clarifies that
only the bucket key is cached.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 14:39:25 -04:00
abuckit c03f2e5bb8 Merge docs/kes-replacement-design: KES replacement design doc 2026-06-01 22:54:36 -04:00
abuckit 822d5d374d docs(kms): add KES replacement design
Design for replacing deprecated MinIO KES with an open-source approach:
a cached per-cluster encryption key in Buckit (L1) plus a stateless
KMS-auth proxy (Fargate, L2) that holds the cloud credentials so they
never live in Buckit. Covers cost analysis, the two-tier cache, security
boundary (credential isolation vs. key-material exposure), and open
decisions.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-01 22:52:51 -04:00
abuckit 764a577ab8 add test container rig for migration 2026-05-31 13:51:53 -04:00