Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
253 commits
Select commit Hold shift + click to select a range
6cd0b85
Close completed Iceberg catalog foundation work
buzzcrow Sep 22, 2026
fbb3264
Add bounded Iceberg namespace records and storage primitives
buzzcrow Sep 22, 2026
7748a40
Separate Iceberg writer credentials from catalog administration
buzzcrow Sep 22, 2026
c03edc7
Persist Iceberg namespace phases and bounded operation payloads
buzzcrow Sep 22, 2026
118dcbc
Implement recoverable namespace property updates and authoritative reads
buzzcrow Sep 22, 2026
9237681
Implement durable namespace creation and parent admission recovery
buzzcrow Sep 22, 2026
ddacb5f
Implement bounded namespace drop and lifecycle recovery
buzzcrow Sep 22, 2026
e2af397
Harden namespace recovery bounds and verify drop restart replay
buzzcrow Sep 22, 2026
8f801ef
Unify namespace property recovery with lifecycle helping
buzzcrow Sep 22, 2026
885098a
Recover abandoned namespace operations with bounded background sweeps
buzzcrow Sep 22, 2026
780b6e1
Add authoritative namespace listing with authenticated continuation t…
buzzcrow Sep 22, 2026
e34b8d4
Expose namespace reads with bounded complete-list spooling
buzzcrow Sep 22, 2026
b6d8006
Integrate namespace mutation retries and record latency acceptance bl…
buzzcrow Sep 22, 2026
9cfc354
Repair stale namespace mappings with bounded background sweeps
buzzcrow Sep 22, 2026
204419b
Define canonical native Iceberg file locations
buzzcrow Sep 22, 2026
63707e0
Publish immutable file authorities with bounded inline storage
buzzcrow Sep 22, 2026
9d9a64b
Add opt-in durable completion for shared chunk objects
buzzcrow Sep 23, 2026
c79f9a3
Stream native files through bounded chunk directories
buzzcrow Sep 23, 2026
5f93105
Record standard FileIO content-kind authority decision
buzzcrow Sep 23, 2026
35a0bee
Add bounded table-scoped FileIO delegation credentials
buzzcrow Sep 23, 2026
ba45004
Validate metadata JSON with bounded streaming workers
buzzcrow Sep 23, 2026
2e66a5e
Probe immutable file footer framing with bounded canonical reads
buzzcrow Sep 23, 2026
a83b466
Resolve ORC footer ranges from bounded postscripts
buzzcrow Sep 23, 2026
128c73a
Stream Avro container blocks with independent resource bounds
buzzcrow Sep 23, 2026
02bfa7c
Bound Avro block decompression independently of encoded size
buzzcrow Sep 23, 2026
5ff38f5
Resolve manifest sequence and row lineage inheritance in constant space
buzzcrow Sep 23, 2026
fe94480
Authenticate delegated file requests with isolated signature credentials
buzzcrow Sep 23, 2026
ae0f9a4
Stream native file HTTP bodies with bounded pull admission
buzzcrow Sep 23, 2026
999b6d3
Restrict native file routing to exact immutable object operations
buzzcrow Sep 23, 2026
6e20807
Checkpoint immutable file writers with resumable bounded digest state
buzzcrow Sep 23, 2026
2d1a833
Read staged byte trees without inventing complete file formats
buzzcrow Sep 23, 2026
fd03f45
Assemble staged files through resumable bounded byte windows
buzzcrow Sep 23, 2026
135a157
Define bounded multipart session and completion phase invariants
buzzcrow Sep 23, 2026
4964939
Persist bounded multipart session and part authority records
buzzcrow Sep 23, 2026
6ae0c8f
Journal multipart part replacements behind a recoverable session fence
buzzcrow Sep 23, 2026
7eb303c
Freeze multipart selections and recover bounded assembly progress
buzzcrow Sep 23, 2026
8d9d1f0
Recover multipart sessions in bounded pages without physical deletion
buzzcrow Sep 23, 2026
849a72e
Verify multipart checkpoint recovery through native storage restart
buzzcrow Sep 23, 2026
3891e0d
Recover multipart publication from a frozen seal and retain exact out…
buzzcrow Sep 23, 2026
a3fd24f
Schedule multipart recovery with independent session deadlines
buzzcrow Sep 23, 2026
9deae31
List multipart parts with bounded scans and stable session snapshots
buzzcrow Sep 23, 2026
482e428
Journal global multipart credits and recover terminal releases
buzzcrow Sep 23, 2026
b7982b2
Bound native file upload streams and verify transport integrity
buzzcrow Sep 23, 2026
aca2815
Validate bounded Avro writer schemas and streamed binary records
buzzcrow Sep 23, 2026
1ff6ebe
Decode bounded Puffin footers and bind deletion vector descriptors
buzzcrow Sep 23, 2026
e51519a
Stream and validate deletion vector bitmaps with bounded state
buzzcrow Sep 23, 2026
30cea6f
Project bounded Avro scalar records by Iceberg field identity
buzzcrow Sep 23, 2026
414337a
Decode manifest list fields with versioned scalar semantics
buzzcrow Sep 23, 2026
b68b85b
Project nested Avro record fields with bounded traversal
buzzcrow Sep 23, 2026
af163d0
Resolve typed manifest entries across bounded Avro blocks
buzzcrow Sep 23, 2026
48f940f
Decode bounded manifest equality IDs
buzzcrow Sep 23, 2026
d7ae138
Validate manifest writer metadata from Avro headers
buzzcrow Sep 23, 2026
8336c6e
Bind manifest inheritance to list metadata
buzzcrow Sep 23, 2026
5f9fbd8
Decode and validate bounded manifest metric maps
buzzcrow Sep 23, 2026
29fd721
Validate contextual manifest semantics and bound streaming reads
buzzcrow Sep 23, 2026
e4b2fae
Add bounded metadata projections with canonical fallback
buzzcrow Sep 23, 2026
93ae9c2
Persist multipart part times and enforce FileIO limits
buzzcrow Sep 23, 2026
53c6ecf
Validate manifest partition summaries against streamed entries
buzzcrow Sep 23, 2026
5ab91bf
Validate bounded Variant manifest statistics
buzzcrow Sep 23, 2026
3dd263c
Bind snapshot deletion vectors to canonical data files
buzzcrow Sep 23, 2026
1499a62
Connect native Iceberg FileIO HTTP routes
buzzcrow Sep 23, 2026
f6db416
Support standard Iceberg FileIO streaming clients
buzzcrow Sep 23, 2026
d190646
Add delegated Iceberg credential wire contract
buzzcrow Sep 23, 2026
57f4ec5
Validate selected unbound manifest streams
buzzcrow Sep 23, 2026
328278f
Validate selected snapshot manifest enumeration
buzzcrow Sep 23, 2026
1a51250
Read historical manifest lists using compatible field defaults
buzzcrow Sep 23, 2026
1ff8482
Validate snapshot row ID allocation across manifests
buzzcrow Sep 23, 2026
89da6d4
Check bounded snapshot file and deletion vector identities
buzzcrow Sep 23, 2026
a0e561b
Decode bounded canonical Parquet footer metadata
buzzcrow Sep 23, 2026
a9d0801
Decode typed Parquet logical annotations
buzzcrow Sep 23, 2026
5d8cdac
Validate Parquet column paths and flat value counts
buzzcrow Sep 23, 2026
4e396f2
Bind selected Parquet footer reads to manifest descriptors
buzzcrow Sep 23, 2026
076a9d3
Clarify remaining selected format validation steps
buzzcrow Sep 23, 2026
c6ccd66
Validate selected Parquet schemas and position delete pages
buzzcrow Sep 23, 2026
f8600b7
Validate snapshot files and add generation-qualified table selection
buzzcrow Sep 23, 2026
338f34c
Validate bounded table metadata documents and snapshot linkage
buzzcrow Sep 23, 2026
e7dad74
Validate metadata defaults and add generation-consistent table reads
buzzcrow Sep 23, 2026
ba8247c
Validate selected metadata transitions and commit requirements
buzzcrow Sep 23, 2026
088f9aa
Decode bounded commit requests with closed update variants
buzzcrow Sep 23, 2026
ccb4eb8
Validate scalar table update parameters before evaluation
buzzcrow Sep 23, 2026
0d3a198
Preserve retained table definition identities across generations
buzzcrow Sep 23, 2026
744a5f7
Build manifest contexts from selected table definitions
buzzcrow Sep 23, 2026
c3ced04
Verify nonempty table metadata against official SDK fixtures
buzzcrow Sep 23, 2026
b99d05b
Compose bounded generation-qualified table HTTP reads
buzzcrow Sep 23, 2026
98cf0fb
Verify table reads with the official REST catalog client
buzzcrow Sep 23, 2026
62e370e
Record remaining name mapping interoperability decision
buzzcrow Sep 23, 2026
79e40b0
Evaluate ordered Iceberg metadata updates with bounded canonical output
buzzcrow Sep 23, 2026
553a5c4
Validate deletion vector replacement coverage across snapshots
buzzcrow Sep 23, 2026
4d4fd3b
Bind historical manifest contexts to selected canonical provenance
buzzcrow Sep 24, 2026
4b34e23
Bind candidate snapshot and statistics checks to canonical history
buzzcrow Sep 24, 2026
2b04530
Journal table commit intent and deterministic candidate reconstruction
buzzcrow Sep 24, 2026
b83c1ce
Publish validated table generations with crash-safe recovery
buzzcrow Sep 24, 2026
3ef273b
Construct SDK-compatible initial table metadata
buzzcrow Sep 24, 2026
7cd9542
Publish initial tables through recoverable namespace admission
buzzcrow Sep 24, 2026
c89859c
Evaluate staged table commits with SDK-compatible initialization
buzzcrow Sep 24, 2026
a9ff9cb
Fence initial table file validation with durable reservations
buzzcrow Sep 24, 2026
ee1219c
Bind staged table publication and expiry through durable phase fences
buzzcrow Sep 24, 2026
737f2a3
Record credential activation and SDK refresh integration boundaries
buzzcrow Sep 24, 2026
4bcad2b
Bound complete Iceberg connections by persisted request lifetimes
buzzcrow Sep 24, 2026
d6db549
Fence credential issuance and verify exact draft SDK refresh
buzzcrow Sep 24, 2026
55548cd
Connect native Iceberg table commits, credentials and recovery
buzzcrow Sep 24, 2026
05879c0
Separate namespace correctness gates from latency targets
buzzcrow Sep 24, 2026
a5be5b6
Clarify Iceberg capacity and engine testing decisions
buzzcrow Sep 24, 2026
a52cfb7
Implement recoverable Iceberg table drop and rename
buzzcrow Sep 24, 2026
8e2462a
Record namespace acceptance evidence and remaining closure gaps
buzzcrow Sep 24, 2026
442f26c
Complete namespace boundary acceptance and preserve timeout error res…
buzzcrow Sep 24, 2026
5fda4fd
Close namespace acceptance and consolidate remaining catalog work
buzzcrow Sep 24, 2026
4bbc222
Complete table lifecycle concurrency and response-loss acceptance
buzzcrow Sep 24, 2026
81cc806
Close table lifecycle acceptance and prioritize commit completion
buzzcrow Sep 24, 2026
08adf18
Verify official commit errors and intersecting request limits
buzzcrow Sep 24, 2026
b44900b
Verify SDK publication conflicts and disabled selected operations
buzzcrow Sep 24, 2026
5924d5d
Decode bounded Parquet integer columns at their physical width
buzzcrow Sep 24, 2026
92c07c7
Decode nullable Parquet pages with bounded definition levels
buzzcrow Sep 24, 2026
dbef205
Validate partition statistics schemas across retained specs
buzzcrow Sep 24, 2026
316789c
Decode bounded Parquet boolean floating and fixed scalar values
buzzcrow Sep 24, 2026
d5aa4da
Resolve legacy schema identities in partition statistics projection
buzzcrow Sep 24, 2026
fc33916
Validate typed partition statistics rows before publication
buzzcrow Sep 24, 2026
4851712
Clarify ownership decision for delete rewrite equivalence
buzzcrow Sep 24, 2026
cfd2fbf
Preserve delete rewrite boundaries without redundant scans
buzzcrow Sep 24, 2026
6f204ad
Reconcile partition statistics with selected manifest inventory
buzzcrow Sep 24, 2026
d7cd7e7
Preserve accepted partition statistics across table evolution
buzzcrow Sep 24, 2026
7577907
Enable validated partition statistics publication for native SDK clients
buzzcrow Sep 24, 2026
af4ae81
Verify native table publication crash recovery and bounded admission
buzzcrow Sep 24, 2026
0fef46c
Close verified atomic commit acceptance and retain FileIO follow-up
buzzcrow Sep 24, 2026
0a84883
Complete native FileIO recovery and validated metadata loading
buzzcrow Sep 24, 2026
5c904e7
Close verified native FileIO acceptance and simplify remaining catalo…
buzzcrow Sep 24, 2026
715d101
Plan foreground REST conformance and capability reconciliation
buzzcrow Sep 24, 2026
8f3be6e
Unify Iceberg route discovery and reject ambiguous credentials
buzzcrow Sep 25, 2026
3aca6ec
Add Iceberg protocol metrics and official client fixtures
buzzcrow Sep 25, 2026
5378d56
Activate Iceberg format capabilities with durable version admission
buzzcrow Sep 25, 2026
d257c1e
Verify official Iceberg clients across response loss and native restart
buzzcrow Sep 25, 2026
fd5cd43
Verify official client behavior across catalog retirement
buzzcrow Sep 25, 2026
e522715
Verify official Java catalog behavior after lost responses
buzzcrow Sep 25, 2026
e4ae722
Advance journal recovery and Iceberg reclamation
buzzcrow Sep 26, 2026
b7d19db
Reclaim retired multipart parts and expired catalog records
buzzcrow Sep 26, 2026
9575a62
Bound reclamation discovery to file and part scopes
buzzcrow Sep 26, 2026
32a07eb
Reclaim terminal multipart assembly checkpoints safely
buzzcrow Sep 26, 2026
39cdf80
Track native block ownership and finalize retired catalog reclamation
buzzcrow Sep 26, 2026
dfc2ff3
Add Iceberg reclamation controls and bounded runtime
buzzcrow Sep 26, 2026
d847f8d
Bound Iceberg reclamation I/O and verify capacity recovery
buzzcrow Sep 26, 2026
ab77283
Record live reclamation fence decision
buzzcrow Sep 26, 2026
4d4ddf0
Add durable candidate sealing admission
buzzcrow Sep 26, 2026
8488382
Admit durable purge work from background scheduler
buzzcrow Sep 26, 2026
d22122c
Constrain Iceberg reclamation to inactive authorities
buzzcrow Sep 26, 2026
f30597f
Keep inactive reclamation resumable under pressure
buzzcrow Sep 26, 2026
4a6defa
Bound Iceberg GC scheduling and validate foreground progress
buzzcrow Sep 26, 2026
a0d85c0
Define pre-alpha development version
buzzcrow Sep 26, 2026
9a4ebee
Define single-node preview deployment
buzzcrow Sep 26, 2026
fd18150
Verify Iceberg reclamation capacity and draft file protection
buzzcrow Sep 26, 2026
7dc1f99
Preserve active Iceberg responses and correct native test ports
buzzcrow Sep 26, 2026
6f563e5
Close validated Iceberg reclamation requirement
buzzcrow Sep 26, 2026
0830556
Define reusable monitor profile and single-node preview topology
buzzcrow Sep 26, 2026
5050ed3
Persist replay-safe monitor bootstrap manifests
buzzcrow Sep 26, 2026
16fa6a4
Store private preview credentials and expose explicit retrieval
buzzcrow Sep 26, 2026
3f1a16c
Render single-node service configs from validated profile
buzzcrow Sep 26, 2026
ebbe027
Add bounded reusable monitor health probes
buzzcrow Sep 26, 2026
6e4a1eb
Publish monitor status and health commands
buzzcrow Sep 26, 2026
1a4c93e
Persist monitor lifecycle events and rotate child logs
buzzcrow Sep 26, 2026
d7ef91f
Supervise preview children and log recovery transitions
buzzcrow Sep 26, 2026
9ef5303
Verify dependent restart and transient probe recovery
buzzcrow Sep 26, 2026
3f67785
Reconcile preview KV groups through management APIs
buzzcrow Sep 26, 2026
e096114
Log preview KV bootstrap transitions
buzzcrow Sep 26, 2026
5c11434
Provision preview sparse disks without truncation
buzzcrow Sep 26, 2026
61d7992
Reset preview restart budget after stable health
buzzcrow Sep 26, 2026
c671b1b
Reconcile preview hardware through Group Zero
buzzcrow Sep 26, 2026
26d07d7
Verify preview KV bootstrap against a real process
buzzcrow Sep 26, 2026
5aa0c38
Fence preview listeners before child replacement
buzzcrow Sep 26, 2026
0c7a6e9
Bind preview disks to a stable owner and data group
buzzcrow Sep 26, 2026
6064dc8
Verify preview disks through real DiskIO processes
buzzcrow Sep 26, 2026
7694b2d
Default Docker Iceberg access to host port 80
buzzcrow Sep 26, 2026
07254e8
Probe preview chunk startup and preserve DiskIO read errors
buzzcrow Sep 26, 2026
2045f08
Listen for preview Iceberg on container port 80
buzzcrow Sep 26, 2026
224ea28
Align direct DiskIO reads for byte-range recovery
buzzcrow Sep 26, 2026
13b2ac1
Add replay-safe preview S3 credential bootstrap
buzzcrow Sep 26, 2026
184e8b1
Add replay-safe preview Iceberg catalog bootstrap
buzzcrow Sep 26, 2026
1370309
Authenticate preview Iceberg health probes
buzzcrow Sep 26, 2026
77a6037
Stage preview services through monitor run
buzzcrow Sep 26, 2026
2cb6ad4
Define strict preview web configuration boundary
buzzcrow Sep 26, 2026
52aa8c1
Probe monitor event-loop liveness over local socket
buzzcrow Sep 26, 2026
33fba5e
Verify real preview Iceberg catalog restart
buzzcrow Sep 26, 2026
24bdf5c
Fail closed on preview web process configuration
buzzcrow Sep 26, 2026
58882d7
Align preview plan with staged bootstrap
buzzcrow Sep 26, 2026
5517da7
Build single-node preview image
buzzcrow Sep 27, 2026
4160605
Guard web startup against local topology replay
buzzcrow Sep 27, 2026
b126a99
Record web write authority decision
buzzcrow Sep 27, 2026
63937ed
Set preview S3 and Web ports
buzzcrow Sep 27, 2026
e6b7381
Add Docker web authority snapshot
buzzcrow Sep 27, 2026
d583866
Define authenticated Docker logical management
buzzcrow Sep 27, 2026
ec19ed7
Wire management bearer to Docker web
buzzcrow Sep 27, 2026
8f14275
Track shared Group 0 authority cleanup
buzzcrow Sep 27, 2026
5194933
Clarify one-way Group 0 bootstrap transfer
buzzcrow Sep 27, 2026
522a801
Verify chunk service authority during preview bootstrap
buzzcrow Sep 27, 2026
1337fde
Log runtime authority bootstrap probes
buzzcrow Sep 27, 2026
b3584a6
Fail closed on malformed bare-metal web registry
buzzcrow Sep 27, 2026
ea94707
Enable preview container boot and manual release gates
buzzcrow Sep 27, 2026
ae78116
Complete preview container acceptance and Group 0 readiness
buzzcrow Sep 27, 2026
61ef025
Route web KV data through Group 0 discovery
buzzcrow Sep 27, 2026
881f37a
Resolve web KV endpoints from Group 0
buzzcrow Sep 27, 2026
4cdbb88
Project web stores from Group 0 topology
buzzcrow Sep 27, 2026
3b424c0
Read web group lists from Group 0
buzzcrow Sep 27, 2026
355ee96
Project web groups from Group 0 membership
buzzcrow Sep 27, 2026
15fc0fd
Seed nonmember KV servers from Group 0
buzzcrow Sep 27, 2026
28d07f5
Restart KV nodes with retained Group 0 seeds
buzzcrow Sep 27, 2026
57c791b
Bootstrap Group 0 before deploying KV peers
buzzcrow Sep 27, 2026
bc42d5b
Close Docker preview CI task
buzzcrow Sep 27, 2026
feec89b
Harden single-node container recovery and packaging
buzzcrow Sep 27, 2026
42bb910
Verify bounded Iceberg traversal at large logical sizes
buzzcrow Sep 27, 2026
2e7e2dd
Bound monitor logs across child restarts
buzzcrow Sep 27, 2026
6ecec11
Show live monitor recovery when cluster authority is unavailable
buzzcrow Sep 27, 2026
a27d413
Preserve authorized file reads after logical table drop
buzzcrow Sep 27, 2026
bd8f28d
Close native Iceberg catalog conformance milestone
buzzcrow Sep 27, 2026
3617616
Package host-built artifacts into the single-node runtime image
buzzcrow Sep 27, 2026
c6badf3
Discover Group 0 for prestarted nonmember servers
buzzcrow Sep 27, 2026
47edb95
Preserve KV registration identity across process restarts
buzzcrow Sep 27, 2026
481000f
Record child exits after preceding probe failures
buzzcrow Sep 27, 2026
d669dae
Record verified single-node runtime image acceptance
buzzcrow Sep 27, 2026
83bf5e5
Reject incomplete logical group and replica wiring
buzzcrow Sep 27, 2026
adb4102
Clean logical descendants after confirmed node deletion
buzzcrow Sep 27, 2026
602587a
Report and clean failed replica creation
buzzcrow Sep 27, 2026
e06f18b
Use real-process election settings for restart coverage
buzzcrow Sep 27, 2026
a2a9105
Confirm conditional logical membership publication
buzzcrow Sep 27, 2026
4963773
Publish new group membership atomically
buzzcrow Sep 27, 2026
28b6472
Reconcile lost logical deletion responses
buzzcrow Sep 27, 2026
9f07074
Separate launch policy from local and SSH process identity
buzzcrow Sep 28, 2026
5fb6e46
Wire launch policy into bare-metal Web and CLI lifecycle
buzzcrow Sep 28, 2026
77de69f
Read bare-metal snapshots from live Group 0 authority
buzzcrow Sep 28, 2026
4e2800e
Share configured process controls across CLI service commands
buzzcrow Sep 28, 2026
c21987a
Retain selected ORC validation as an independent follow-up
buzzcrow Sep 28, 2026
bf29a26
Preserve system groups across interrupted bootstrap retries
buzzcrow Sep 28, 2026
217479a
Target the Iceberg Docker Hub repository and drop optional size exper…
buzzcrow Sep 28, 2026
c6c9dde
Clarify Apport collection limits for container crashes
buzzcrow Sep 28, 2026
5a67228
Discover elected leaders for explicitly rejected conditional writes
buzzcrow Sep 28, 2026
14b3d12
Use the versioned Docker Hub image in the end-user quick start
buzzcrow Sep 28, 2026
957acf3
Use the DockerHub environment for container publication
buzzcrow Sep 28, 2026
882df87
Rely on environment review to authorize container publication
buzzcrow Sep 28, 2026
da135a7
Keep fault-injection routing stable across topology refreshes
buzzcrow Sep 28, 2026
b55626e
Record the confirmed Docker Hub release configuration
buzzcrow Sep 28, 2026
4cfff64
Rename the Docker container publication workflow
buzzcrow Sep 28, 2026
3a25333
Add project links and maintainer metadata to the Iceberg image
buzzcrow Sep 28, 2026
beffafa
Confirm bootstrap metadata without overwriting committed authority
buzzcrow Sep 28, 2026
63f68db
Defer container crash diagnostics to the deployment follow-up
buzzcrow Sep 28, 2026
197702a
Scope runner artifact paths to container test steps
buzzcrow Sep 28, 2026
b57409f
Validate upload MD5 while consuming decoded file bytes
buzzcrow Sep 28, 2026
56af574
Reuse the namespace initialized by native file test setup
buzzcrow Sep 28, 2026
cf37456
Track a complete review of shared access I/O and reclamation
buzzcrow Sep 28, 2026
dbaa0cd
Specify twenty parts for the multipart acceptance case
buzzcrow Sep 28, 2026
68f5fbe
Prepare public documentation for the first development release
buzzcrow Sep 28, 2026
ac85574
Install RPC connection handlers before starting reads
buzzcrow Sep 28, 2026
8ecc06f
Organize test tooling and verify Iceberg client suites
buzzcrow Sep 28, 2026
9ae946f
Close the verified single-node container requirement
buzzcrow Sep 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
102 changes: 101 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ env:
RUST_BACKTRACE: 1
RUST_LIB_BACKTRACE: 1

# 7 parallel jobs. See doc/working/plan-test.md § "CI Job Grouping Guide"
# 10 parallel jobs. See doc/working/test.md § "Current CI Test Design"
# for the assignment rule and how to add new test tasks.
jobs:
Lint:
Expand Down Expand Up @@ -223,6 +223,70 @@ jobs:
if: always()
run: pixi run clean-env

IcebergE2E:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Free disk space
run: |
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /usr/local/.ghcup /opt/hostedtoolcache
sudo apt-get clean
df -h /
- uses: prefix-dev/setup-pixi@v0.8.1
with:
pixi-version: latest
- uses: Swatinem/rust-cache@v2
- name: Run Iceberg acceptance
run: pixi run -e iceberg-e2e test-iceberg-e2e
- name: Upload Iceberg failure logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: runtime-iceberge2e-${{ github.run_attempt }}
path: |
.crowdb-runtime/
target/iceberg-rck/open-api/build/reports/tests/
target/iceberg-rck/open-api/build/test-results/
if-no-files-found: ignore
retention-days: 7
- name: Clean subprocesses
if: always()
run: pixi run clean-env

IcebergSDK:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Free disk space
run: |
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /usr/local/.ghcup /opt/hostedtoolcache
sudo apt-get clean
df -h /
- uses: prefix-dev/setup-pixi@v0.8.1
with:
pixi-version: latest
- uses: Swatinem/rust-cache@v2
- name: Run Iceberg acceptance
run: pixi run -e iceberg-e2e test-iceberg-sdk
- name: Upload Iceberg failure logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: runtime-icebergsdk-${{ github.run_attempt }}
path: |
.crowdb-runtime/
target/iceberg-rck/open-api/build/reports/tests/
target/iceberg-rck/open-api/build/test-results/
if-no-files-found: ignore
retention-days: 7
- name: Clean subprocesses
if: always()
run: pixi run clean-env

ConsoleTests:
runs-on: ubuntu-latest
steps:
Expand Down Expand Up @@ -334,3 +398,39 @@ jobs:
- name: Clean subprocesses
if: always()
run: pixi run clean-env

DockerPreview:
runs-on: ubuntu-24.04
permissions:
contents: read
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Free disk space
run: |
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /usr/local/.ghcup /opt/hostedtoolcache
sudo apt-get clean
df -h /
- uses: prefix-dev/setup-pixi@v0.8.1
with:
pixi-version: latest
- name: Build and test single-node preview image
env:
CROWDB_PREVIEW_TEST_ARTIFACTS: ${{ runner.temp }}/crowdb-preview-artifacts
run: pixi run test-single-node-container
- name: Capture Docker diagnostics on failure
if: failure()
run: |
docker ps -a
docker images
docker info
df -h
- name: Upload preview failure logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: docker-preview-${{ github.run_attempt }}
path: ${{ runner.temp }}/crowdb-preview-artifacts
if-no-files-found: ignore
retention-days: 7
157 changes: 157 additions & 0 deletions .github/workflows/release-container.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
name: Publish crowdb-iceberge docker container

on:
workflow_dispatch:
inputs:
tag:
description: Existing Git release tag to publish
required: true
type: string

concurrency:
group: crowdb-iceberg-single-node-preview-release
cancel-in-progress: false

jobs:
verify:
runs-on: ubuntu-24.04
permissions:
contents: read
outputs:
version: ${{ steps.source.outputs.version }}
revision: ${{ steps.source.outputs.revision }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ inputs.tag }}
fetch-depth: 0
submodules: true
- uses: prefix-dev/setup-pixi@v0.8.1
with:
pixi-version: latest
- name: Install host test prerequisites
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler
- name: Verify release source
id: source
env:
RELEASE_TAG: ${{ inputs.tag }}
GH_TOKEN: ${{ github.token }}
run: |
pixi run bash -euc '
[[ "$GITHUB_REPOSITORY" == buzzcrow/crowdb ]]
[[ "$RELEASE_TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z.-]+)?$ ]]
[[ "$RELEASE_TAG" == "v$(cat VERSION)" ]]
revision=$(git rev-parse --verify "refs/tags/$RELEASE_TAG^{commit}")
[[ "$revision" == "$(git rev-parse HEAD)" ]]
[[ "$(gh release view "$RELEASE_TAG" --json isDraft --jq .isDraft)" == false ]]
printf "version=%s\nrevision=%s\n" "${RELEASE_TAG#v}" "$revision" >> "$GITHUB_OUTPUT"
'
- name: Free disk space
run: |
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /usr/local/.ghcup /opt/hostedtoolcache
sudo apt-get clean
df -h /
- name: Build and test image without publication credentials
env:
CROWDB_PREVIEW_TEST_ARTIFACTS: ${{ runner.temp }}/crowdb-preview-artifacts
run: pixi run test-single-node-container
- name: Run S3 client acceptance
run: pixi run clean-env && pixi run -e s3-e2e test-boto3-e2e
- name: Run Iceberg client acceptance
run: pixi run clean-env && pixi run -e iceberg-e2e test-pyiceberg-e2e
- name: Run console acceptance
run: pixi run clean-env && pixi run test-console
- name: Require installed system browser
run: |
pixi run bash -euc '
for browser in /snap/bin/chromium /usr/bin/chromium /usr/bin/chromium-browser /usr/bin/google-chrome /usr/bin/google-chrome-stable /usr/bin/microsoft-edge; do
[[ ! -x "$browser" ]] || exit 0
done
echo "Release runner requires an installed system browser" >&2
exit 1
'
- name: Run console UI acceptance
run: pixi run clean-env && pixi run test-console-ui
- name: Check Rust formatting and lint
run: pixi run rs-fmt-check && pixi run rs-lint
- name: Archive verified runtime files
run: pixi run tar -C target/container-runtime -czf target/container-runtime.tar.gz .
- uses: actions/upload-artifact@v4
with:
name: verified-container-runtime
path: target/container-runtime.tar.gz
compression-level: 0
retention-days: 7
- name: Upload preview failure logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: release-preview-${{ github.run_attempt }}
path: ${{ runner.temp }}/crowdb-preview-artifacts
if-no-files-found: ignore
retention-days: 7

publish:
needs: verify
runs-on: ubuntu-24.04
environment: DockerHub
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
with:
ref: ${{ inputs.tag }}
fetch-depth: 0
submodules: true
- uses: prefix-dev/setup-pixi@v0.8.1
with:
pixi-version: latest
- name: Require publication credentials and unused immutable tags
env:
RELEASE_TAG: ${{ inputs.tag }}
REVISION: ${{ needs.verify.outputs.revision }}
DOCKERHUB_USERNAME: ${{ vars.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
run: |
pixi run bash -euc '
[[ -n "$DOCKERHUB_USERNAME" && -n "$DOCKERHUB_TOKEN" ]]
[[ "$(git rev-parse HEAD)" == "$REVISION" ]]
for tag in "$RELEASE_TAG" "git-$REVISION"; do
status=$(curl --silent --show-error --output /dev/null --write-out "%{http_code}" \
"https://hub.docker.com/v2/namespaces/crowdb/repositories/crowdb-iceberg/tags/$tag")
[[ "$status" == 404 ]] || { echo "Immutable tag $tag is present or registry unavailable (HTTP $status)" >&2; exit 1; }
done
'
- uses: docker/setup-buildx-action@v4
- uses: actions/download-artifact@v4
with:
name: verified-container-runtime
path: target
- name: Extract verified runtime files
run: pixi run bash -euc 'mkdir -p target/container-runtime && tar -C target/container-runtime -xzf target/container-runtime.tar.gz'
- uses: docker/login-action@v4
with:
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and publish signed-source image with attestations
id: build
uses: docker/build-push-action@v7
with:
context: target/container-runtime
file: container/single-node-container/Dockerfile
platforms: linux/amd64
push: true
provenance: mode=max
sbom: true
build-args: |
SOURCE_REVISION=${{ needs.verify.outputs.revision }}
PREVIEW_VERSION=${{ needs.verify.outputs.version }}
tags: |
docker.io/crowdb/crowdb-iceberg:${{ inputs.tag }}
docker.io/crowdb/crowdb-iceberg:git-${{ needs.verify.outputs.revision }}
- uses: sigstore/cosign-installer@v4.1.2
- name: Sign published digest
env:
DIGEST: ${{ steps.build.outputs.digest }}
run: pixi run cosign sign --yes "docker.io/crowdb/crowdb-iceberg@$DIGEST"
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,6 @@ lib/crowdb-rpc/.cache/
app/crowdb-diskio/build/
app/crowdb-diskio/build*/
app/crowdb-diskio/.cache/

# Python tooling bytecode
__pycache__/
63 changes: 33 additions & 30 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,39 @@
<!-- Copyright 2026-present Gian <crow.db@outlook.com> -->
<!-- Licensed under the Apache License, Version 2.0. -->

# Changelog

All notable changes to CROWDB will be documented in this file.
CROWDB is preparing its first development release, `0.1.0-dev`. Publication
is pending; this is not a production release or a compatibility promise.

CROWDB does not yet maintain compatibility for persisted data, WAL, metadata,
or other on-disk formats. A newer checkout may be unable to read data created by
an older checkout. Use disposable data only.

Changelog history begins with the first public Docker preview. Development work
before that baseline remains available in Git history and project requirements
but is intentionally not reconstructed as released change history.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
The changelog will follow [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
from that baseline. Version tags alone do not imply Semantic Versioning
compatibility until the project explicitly adopts and documents a compatibility
policy.

## [Unreleased]

### Added
- Copyright headers on all source files
- AGENTS.md with project overview and dispatch table
- CONTRIBUTING.md, PR/Issue templates
- Demo recording plan (`doc/working/plan-demo.md`)

### Changed
- Restructured agent workflows: conventions merged into `/coding` workflow
- Slimmed coding.md, doc.md, review.md
- README: added badges, folded Getting Started into `<details>`

## [0.1.0] - 2026-07-13

### Added
- Multi-Paxos consensus with per-key slot pipelining and out-of-order apply
- WAL with multi-disk segments, batched durable flush, replay, and GC
- crowdb-tree storage engine: B+tree with delta chains, io_uring async I/O, epoch-safe lock-free reads, buffer pool
- `KVEngine` trait with in-memory and crowdb-tree backends
- crowdb-rpc services: Paxos (Prepare/Promise/Accept/Accepted), KV, Snapshot
- Leader election with term/ballot fencing and leader lease
- Reconfiguration: member add/remove, leader transfer, membership epoch fence
- `crowdb-kv-server` binary with HTTP management API
- `crowdb-kv-client` library with topology cache, retry, idempotency
- `crowdb-console`: web UI (Axum + React) and CLI for cluster lifecycle management
- Comprehensive design documentation (`doc/`)
- CI with GitHub Actions (fmt, clippy, test, Playwright E2E)
- Pre-commit hooks (cargo fmt, clippy, clang-format, clang-tidy)
### 0.1.0-dev preparation

- Single-node Linux amd64 container with native Iceberg REST catalog and FileIO,
backed by CROWDB metadata, chunk storage and disk services.
- Persistent bootstrap, generated client credentials, health checks, bounded
service recovery and restart validation.
- S3 object access through an optional published endpoint.
- Host builds and runtime-only container packaging, with a manual Docker Hub
publication workflow for version and commit tags, signatures, SBOM and provenance.

The intended image is `crowdb/crowdb-iceberg:v0.1.0-dev`; no published digest is
recorded yet. The GUI is not ready for this container. Multi-node deployment,
production hardening and data-format upgrades are outside this release.

See the [container guide](doc/user-manual/docker-single-node-user-guide.md) for
supported startup, persistence, credentials and recovery behavior.
Loading
Loading