Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
dfe5a24
feat(storage): integrate layered capsule protocol
forhappy Sep 27, 2026
e520192
fix(mount): scope remote context guard to FUSE
forhappy Sep 27, 2026
6bf59c7
fix(cache): classify native Windows inventory paths
forhappy Sep 27, 2026
d2cfbe8
docs: record reconciled capsule replay and failed performance gates
forhappy Sep 27, 2026
eb4aa9f
docs: qualify connectivity commit-graph probe results
forhappy Sep 27, 2026
b22e001
fix(qualification): preserve private clone cache creation
forhappy Sep 27, 2026
c860ffe
fix(metadata): gate private path-state decoding with its callers
forhappy Sep 27, 2026
2bee5cd
test(perf): retain fetch phase diagnostics for qualification
forhappy Sep 27, 2026
811a9a7
perf(git): finish capsule fetch negotiation from proven transitions
forhappy Sep 27, 2026
8efff32
fix(receive): bound capsule attempt worker stack
forhappy Sep 28, 2026
3a0f340
docs(qualification): record full authenticated-cutpoint replay
forhappy Sep 28, 2026
851fbb0
docs(qualification): record ineffective fetch window trial
forhappy Sep 28, 2026
5fdba57
perf(read): reuse verified small capsule frontiers
forhappy Sep 28, 2026
2e97f6f
fix(server): close rebased storage-root test
forhappy Sep 28, 2026
0d2cdba
docs: record bounded-frontier GA capacity stop
forhappy Sep 28, 2026
677d958
docs: mark lost GA artifacts unqualified
forhappy Sep 28, 2026
f990449
test(qualification): retain replay binary and record full GA result
forhappy Sep 28, 2026
bb47291
test(qualification): meter v2 Xet read phases
forhappy Sep 28, 2026
0ba474d
docs(qualification): attribute v2 Xet origin reads
forhappy Sep 28, 2026
76a86e2
fix(push): reconcile retried ref-head creation
forhappy Sep 28, 2026
8610ebf
docs(schema): sync capsule GC and repack output
forhappy Sep 28, 2026
19c2f7b
fix(ci): align protocol and Cell smoke instrumentation
forhappy Sep 28, 2026
7e8a5a5
docs(bench): record pinned Kubernetes 5000-push replay
forhappy Sep 28, 2026
00b7177
fix(ci): measure delivered packs and supply Cell test scope
forhappy Sep 28, 2026
1a0165b
test(remote): assert layered frontier reader contracts
forhappy Sep 28, 2026
158e104
test(e2e): bound Xet qualification disk peak
forhappy Sep 28, 2026
c172bf1
test(xet): bound scale-run workspace lifetime
forhappy Sep 28, 2026
59c30cf
docs(capsule): record successful Xet lifecycle rehearsal
forhappy Sep 28, 2026
9b91d0b
test(xet): fail scale qualification on proxy errors
forhappy Sep 28, 2026
b110282
docs: record current v2 scale qualification limits
forhappy Sep 28, 2026
c7c88bf
docs(capsule): record matched fan-in qualification
forhappy Sep 28, 2026
4e71164
test(capsule): assert current snapshot and repack behavior
forhappy Sep 29, 2026
64832f1
fix(mirror): read layered capsule ancestry from store
forhappy Sep 29, 2026
7c2adb5
test(protocol): align mirror evidence matrix
forhappy Sep 29, 2026
9c35312
fix(test): keep object-covered fallback recoverable
forhappy Sep 29, 2026
50fb369
perf(repack): publish interactive checkpoint in one pass
forhappy Sep 30, 2026
7d49cbf
fix(server): trace Cellule actions in fleet qualification
forhappy Sep 30, 2026
5d94bc9
docs(qualification): record clean RustFS GA Xet rerun
forhappy Sep 30, 2026
9415c4b
fix(read): derive layered install filter from selection
forhappy Sep 30, 2026
85dc8ab
docs: record PR-head Kubernetes RustFS qualification
forhappy Sep 30, 2026
5f0935d
perf(add): reuse remote chunk index per invocation
forhappy Sep 30, 2026
62364e1
test(server): wait for object coverage before fleet-only phase
forhappy Sep 30, 2026
53b1107
test(e2e): resume capacity-stopped Xet qualification
forhappy Sep 30, 2026
c3ce143
docs(protocol): record exact PR-head qualification
forhappy Sep 30, 2026
d5b2caf
perf(capsule): roll bounded per-ref windows
forhappy Sep 30, 2026
5040f2e
test(e2e): reject promisor replay sources
forhappy Sep 30, 2026
0a1fdf6
fix(workflow): use resolved repository remote
forhappy Oct 1, 2026
523ec5a
perf(qualification): make fetch request count informational
forhappy Oct 1, 2026
98f6c2e
docs(qualification): record exact-head k8s replay
forhappy Oct 1, 2026
a29d81d
perf(repack): bound capsule pack-member fanout
forhappy Oct 1, 2026
e2debb1
fix(repack): scope descriptor imports to tests
forhappy Oct 1, 2026
3eccb29
docs(qualification): record seed-index timeout
forhappy Oct 1, 2026
f9b941c
perf(fetch): trace incremental fetch phases
forhappy Oct 1, 2026
b1b67d7
test(qualification): enable remote-helper phase diagnostics
forhappy Oct 1, 2026
f386d79
fix(gc): collect stale capsule indexes
forhappy Oct 1, 2026
537cf16
test(server): bind fallback proof to owner log epoch
forhappy Oct 1, 2026
13ff725
perf(clone): clone cached packs copy-on-write
forhappy Oct 1, 2026
75375e1
fix(ci): avoid redundant error conversions
forhappy Oct 1, 2026
633cf27
fix(storage): scope async-trait must-use lint
forhappy Oct 1, 2026
8f0d709
test(qualification): enforce per-window push latency
forhappy Oct 1, 2026
7ac31e7
docs(qualification): record latest full GA replay
forhappy Oct 1, 2026
5d7e21a
fix(cache): fall back on pack cache read errors
forhappy Oct 1, 2026
0b5dd10
fix(ci): satisfy split-crate lint gate
forhappy Oct 1, 2026
68fe761
fix(ci): scope async trait must-use lint
forhappy Oct 1, 2026
bf8c949
fix(ci): scope async staging trait lint
forhappy Oct 1, 2026
7ebe1e0
fix: pass split-crate clippy on current stable
forhappy Oct 2, 2026
83891e9
test(cell): follow inactive log membership rotation
forhappy Oct 2, 2026
d6f899d
docs: clarify historical fetch gate status
forhappy Oct 2, 2026
26c3047
fix(server): rotate stale Cell log membership
forhappy Oct 2, 2026
fa2b42d
fix(server): qualify provider error type
forhappy Oct 2, 2026
93f6e8b
perf(push): bypass ancestry scan for direct parents
forhappy Oct 2, 2026
0747011
test(server): await follower log rotation
forhappy Oct 2, 2026
d791b6c
docs(capsule): make fetch request counts diagnostic
forhappy Oct 2, 2026
5a5fba8
docs(capsule): record outstanding closeout gates
forhappy Oct 2, 2026
a737c76
ci: qualify provider contracts against RustFS GA
forhappy Oct 2, 2026
92a03fe
test(v2): retain completed qualification proofs on failure
forhappy Oct 2, 2026
3252010
docs(capsule): align publication design with layered runtime
forhappy Oct 2, 2026
743f57d
docs: record capsule closeout blockers
forhappy Oct 2, 2026
29d1eb2
ci: qualify large repositories on pinned RustFS GA
forhappy Oct 2, 2026
e5b07c8
fix(optimize): reconcile shared xorb pages atomically
forhappy Oct 3, 2026
18e7d61
perf(git): batch generated sideband writes
forhappy Oct 3, 2026
bb304fe
docs(capsule): record final-runtime replay and remaining gates
forhappy Oct 3, 2026
1147e51
docs(capsule): record legacy journal resume reproduction
forhappy Oct 3, 2026
534ab60
fix(xorbs): migrate incomplete legacy optimization journals
forhappy Oct 3, 2026
9081035
docs(capsule): record actual optimizer crash and quarantine proof
forhappy Oct 3, 2026
03b3185
perf(xet): skip placement indexing for published files
forhappy Oct 3, 2026
2493d4c
test(compose): preserve non-member fallback candidate
forhappy Oct 3, 2026
822e88a
perf(capsule): reuse pushed pack for visibility delta
forhappy Oct 3, 2026
db92867
docs(capsule): refresh closeout gates
forhappy Oct 3, 2026
2bb034e
docs(capsule): record exact-head qualification gaps
forhappy Oct 3, 2026
2bbb0fb
test: verify blobless clone hydration behavior
forhappy Oct 3, 2026
0a43a1a
docs(capsule): record current qualification status
forhappy Oct 3, 2026
c0e23bd
docs(capsule): scope qualification to code head
forhappy Oct 3, 2026
ab35005
docs(capsule): clarify qualification code head
forhappy Oct 3, 2026
414176a
test(server): require fresh fallback containers
forhappy Oct 3, 2026
88a216e
test(server): handle already-removed failover peers
forhappy Oct 3, 2026
22a400c
test(server): propagate container cleanup failures
forhappy Oct 3, 2026
3d4b4f0
test(server): isolate replacement peer state
forhappy Oct 3, 2026
24d293a
test(server): keep owner data path during restart check
forhappy Oct 3, 2026
a0b16f6
test(server): scope replacement state to each run
forhappy Oct 3, 2026
56e7c48
test(server): wait for inactive fallback epoch
forhappy Oct 3, 2026
57a507d
test(server): snapshot fallback membership before restart
forhappy Oct 3, 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
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .github/workflows/architecture.yml
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,9 @@ jobs:
CRAB_HTTP_CELL_TEST_BUCKET: crab-cell-runtime
CRAB_HTTP_CELL_TEST_ENDPOINT: http://127.0.0.1:9000
CRAB_HTTP_CELL_TEST_PREFIX: server-${{ github.run_id }}-${{ github.run_attempt }}
CRAB_CELL_TEST_BUCKET: crab-cell-runtime
CRAB_CELL_TEST_ENDPOINT: http://127.0.0.1:9000
CRAB_CELL_TEST_PREFIX: public-${{ github.run_id }}-${{ github.run_attempt }}
RUSTFS_IMAGE: ghcr.io/rustfs/rustfs:1.0.0-glibc@sha256:bffcab0c9d647aab0055d1c69d340b202d0909966b385932d4ead1aeb7602858

steps:
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/git-protocol-v2-partial-clone.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ on:
- "crab/src/cmd/fsck*.rs"
- "crab/src/cmd/history_recovery.rs"
- "crab/src/cmd/metadb.rs"
- "crab/src/cmd/push.rs"
- "crab/src/cmd/repack.rs"
- "crab/src/cmd/gc/**"
- "crab/src/replication/**"
Expand Down Expand Up @@ -80,6 +81,7 @@ on:
- "crab/src/cmd/fsck*.rs"
- "crab/src/cmd/history_recovery.rs"
- "crab/src/cmd/metadb.rs"
- "crab/src/cmd/push.rs"
- "crab/src/cmd/repack.rs"
- "crab/src/cmd/gc/**"
- "crab/src/replication/**"
Expand Down Expand Up @@ -185,6 +187,7 @@ jobs:
git::push::tests::shared_xorb_non_atomic_replan \
git::push::tests::ref_lease
cargo test -p crab --lib git::remote_helper::tests::list_session_does_not_open_a_damaged_staging_index --locked --features gix-transport
cargo test -p crab --lib git::remote_helper::tests::capsule_promisor_fetch_ --locked --features gix-transport
cargo test -p crab-metadata --lib file_index_lookup --locked --features file-index-reader
cargo test -p crab-metadata --lib git_visibility::tests --locked --features remote-index
cargo test -p crab-metadata --lib ref_journal::tests --locked --features remote-index
Expand Down
36 changes: 27 additions & 9 deletions .github/workflows/large-repository-rustfs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ on:
- ".github/workflows/large-repository-rustfs.yml"
- "crab/scripts/e2e/run_large_repo_rustfs.py"
- "crab/scripts/e2e/test_verify_large_repo_rustfs_report.py"
- "crab/scripts/e2e/run_capsule_k8s_rustfs.py"
- "crab/scripts/e2e/test_run_capsule_k8s_rustfs.py"
- "crab/docs/design/capsule-layered-packs.md"
- "crab/scripts/verify-large-repo-rustfs-report.py"
- "crab/docs/guides/large-repository-qualification.md"
- "crates/crab-read/src/upload_pack.rs"
Expand Down Expand Up @@ -37,6 +40,9 @@ on:
- ".github/workflows/large-repository-rustfs.yml"
- "crab/scripts/e2e/run_large_repo_rustfs.py"
- "crab/scripts/e2e/test_verify_large_repo_rustfs_report.py"
- "crab/scripts/e2e/run_capsule_k8s_rustfs.py"
- "crab/scripts/e2e/test_run_capsule_k8s_rustfs.py"
- "crab/docs/design/capsule-layered-packs.md"
- "crab/scripts/verify-large-repo-rustfs-report.py"
- "crab/docs/guides/large-repository-qualification.md"
- "crates/crab-read/src/upload_pack.rs"
Expand Down Expand Up @@ -85,9 +91,11 @@ jobs:
- name: Verify report contract tests
run: |
python3 -m unittest crab/scripts/e2e/test_verify_large_repo_rustfs_report.py
python3 -m unittest crab/scripts/e2e/test_run_capsule_k8s_rustfs.py
python3 -m py_compile \
crab/scripts/e2e/run_large_repo_rustfs.py \
crab/scripts/verify-large-repo-rustfs-report.py
crab/scripts/verify-large-repo-rustfs-report.py \
crab/scripts/e2e/run_capsule_k8s_rustfs.py

kubernetes-rustfs:
name: Kubernetes 1,000-commit RustFS qualification
Expand All @@ -104,7 +112,8 @@ jobs:
CRAB_CACHE_PSK: cache-smoke-psk
CARGO_TARGET_DIR: /Volumes/Workspace/crabbuild-target/crab-large-repo-qualification-${{ github.run_id }}-${{ github.run_attempt }}
QUALIFICATION_ROOT: /Volumes/Workspace/CrabBuild/crabbuild-qualification
RUSTFS_IMAGE: rustfs/rustfs:1.0.0-beta.8-glibc
RUSTFS_IMAGE: ghcr.io/rustfs/rustfs@sha256:bffcab0c9d647aab0055d1c69d340b202d0909966b385932d4ead1aeb7602858
RUSTFS_CONTAINER: crab-large-repo-rustfs-${{ github.run_id }}-${{ github.run_attempt }}
steps:
- name: Checkout
uses: actions/checkout@v4
Expand Down Expand Up @@ -135,10 +144,10 @@ jobs:
set -euo pipefail
data_root="${QUALIFICATION_ROOT}/rustfs-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}"
mkdir -p "$data_root"
sudo chown 10001:10001 "$data_root"
docker pull "$RUSTFS_IMAGE"
docker rm -f crab-large-repo-rustfs >/dev/null 2>&1 || true
docker run -d \
--name crab-large-repo-rustfs \
--name "$RUSTFS_CONTAINER" \
-p 9000:9000 \
-e RUSTFS_ACCESS_KEY=crab \
-e RUSTFS_SECRET_KEY=crab \
Expand All @@ -150,9 +159,16 @@ jobs:
fi
sleep 1
done
docker logs crab-large-repo-rustfs >&2 || true
docker logs "$RUSTFS_CONTAINER" >&2 || true
exit 1

- name: Verify and retain RustFS version
run: |
set -euo pipefail
version_file="${QUALIFICATION_ROOT}/rustfs-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}-version.txt"
docker exec "$RUSTFS_CONTAINER" rustfs --version | tee "$version_file"
test "$(head -n 1 "$version_file")" = "rustfs 1.0.0"

- name: Start cache service
run: |
set -euo pipefail
Expand Down Expand Up @@ -199,16 +215,17 @@ jobs:
set -euo pipefail
first="gha-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}-a"
second="gha-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}-b"
version_file="${QUALIFICATION_ROOT}/rustfs-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}-version.txt"
object_store_version="$(head -n 1 "$version_file")"
common=(
--crab-bin "${CARGO_TARGET_DIR}/release/crab"
--root "$QUALIFICATION_ROOT"
--source /Volumes/Workspace/Github/kubernetes/kubernetes
--object-store-version "$RUSTFS_IMAGE"
--object-store-version "$object_store_version"
--require-cache-service
--cold-clone-fanout 50
--warm-clone-fanout 100
--team-load
--cleanup-remote
)
python3 crab/scripts/e2e/run_large_repo_rustfs.py "${common[@]}" --run-id "$first"
python3 crab/scripts/verify-large-repo-rustfs-report.py \
Expand Down Expand Up @@ -248,9 +265,9 @@ jobs:
- name: Capture RustFS logs
if: always()
run: |
docker logs crab-large-repo-rustfs \
docker logs "$RUSTFS_CONTAINER" \
> "$QUALIFICATION_ROOT/rustfs-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}.log" 2>&1 || true
docker rm -f crab-large-repo-rustfs >/dev/null 2>&1 || true
docker rm -f "$RUSTFS_CONTAINER" >/dev/null 2>&1 || true

- name: Upload qualification evidence
if: always()
Expand All @@ -263,5 +280,6 @@ jobs:
/Volumes/Workspace/CrabBuild/crabbuild-qualification/comparison-${{ github.run_id }}-${{ github.run_attempt }}.json
/Volumes/Workspace/CrabBuild/crabbuild-qualification/cache-service-${{ github.run_id }}-${{ github.run_attempt }}-captured.log
/Volumes/Workspace/CrabBuild/crabbuild-qualification/rustfs-${{ github.run_id }}-${{ github.run_attempt }}.log
/Volumes/Workspace/CrabBuild/crabbuild-qualification/rustfs-${{ github.run_id }}-${{ github.run_attempt }}-version.txt
if-no-files-found: warn
retention-days: 30
13 changes: 11 additions & 2 deletions .github/workflows/pb-provider-qualification.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ concurrency:
cancel-in-progress: false

env:
RUSTFS_IMAGE: rustfs/rustfs:1.0.0-beta.8-glibc
# RustFS 1.0.0 GA; this immutable index covers Linux amd64 and arm64.
RUSTFS_IMAGE: ghcr.io/rustfs/rustfs@sha256:bffcab0c9d647aab0055d1c69d340b202d0909966b385932d4ead1aeb7602858

jobs:
evidence-contract:
Expand Down Expand Up @@ -86,7 +87,7 @@ jobs:
CRAB_S3_FORCE_PATH_STYLE: "true"
CRAB_PROVIDER_QUALIFICATION_PROVIDER: s3
CRAB_PROVIDER_QUALIFICATION_BUCKET: crab-provider-qualification
CRAB_PROVIDER_QUALIFICATION_SERVICE: rustfs-1.0.0-beta.8-glibc
CRAB_PROVIDER_QUALIFICATION_SERVICE: rustfs-1.0.0-ga
CRAB_PROVIDER_QUALIFICATION_REGION: local
CRAB_PROVIDER_QUALIFICATION_SOURCE_SHA: ${{ github.sha }}
CRAB_PROVIDER_QUALIFICATION_WORKFLOW_RUN_ID: ${{ github.run_id }}
Expand Down Expand Up @@ -123,6 +124,14 @@ jobs:
docker logs crab-provider-rustfs >&2 || true
exit 1

- name: Verify and retain RustFS version
run: |
set -euo pipefail
version_report="$(dirname "$CRAB_PROVIDER_QUALIFICATION_REPORT")/service-version.txt"
mkdir -p "$(dirname "$version_report")"
docker exec crab-provider-rustfs rustfs --version | tee "$version_report"
test "$(head -n 1 "$version_report")" = "rustfs 1.0.0"

- name: Run provider contract
run: |
cargo test -p crab --test provider_qualification --locked \
Expand Down
70 changes: 20 additions & 50 deletions .github/workflows/s3-gateway.yml
Original file line number Diff line number Diff line change
Expand Up @@ -295,9 +295,11 @@ jobs:
- name: Build minimal Crab fixture publisher
env:
CARGO_TARGET_DIR: ${{ runner.temp }}/crab-s3-gateway-publisher-target
run: >-
cargo build --release --locked -p crab --bin crab
--no-default-features --features simd-accel,gix-pathmatch
run: |
cargo build --release --locked -p crab --bin crab \
--no-default-features --features simd-accel,gix-pathmatch
cargo build --release --locked -p crab-sdk \
--example s3_gateway_fixture --features content,write

- name: Build locked gateway image
id: build
Expand Down Expand Up @@ -485,11 +487,6 @@ jobs:
for _ in range(64):
stream.write(source.randbytes(1024 * 1024))
PY
cp "${source_root}/qualification/xet-large.bin" \
"${source_root}/qualification/xet-duplicate.bin"
git -C "${source_root}" init -q -b main
git -C "${source_root}" config user.name 'S3 Xet qualification'
git -C "${source_root}" config user.email 'qualification@example.invalid'
export AWS_ACCESS_KEY_ID="${RUSTFS_ACCESS_KEY}"
export AWS_SECRET_ACCESS_KEY="${RUSTFS_SECRET_KEY}"
export AWS_DEFAULT_REGION=us-east-1
Expand All @@ -500,55 +497,28 @@ jobs:
export AWS_EC2_METADATA_DISABLED=true
export AWS_VIRTUAL_HOSTED_STYLE_REQUEST=false
export CRAB_CACHE_DIR="${xet_root}/publisher-cache"
crab_bin="${RUNNER_TEMP}/crab-s3-gateway-publisher-target/release/crab"
(
cd "${source_root}"
"${crab_bin}" init --storage-provider s3 \
crab://crab-s3-gateway-qualification/repositories/qualification
"${crab_bin}" track '*.bin'
"${crab_bin}" add qualification/xet-large.bin \
qualification/xet-duplicate.bin
git show :qualification/xet-large.bin > "${xet_root}/xet-pointer-staged"
LISTING_ROOT="${source_root}/qualification/listing" \
XET_POINTER="${xet_root}/xet-pointer-staged" python3 - <<'PY'
import os
from pathlib import Path

root = Path(os.environ["LISTING_ROOT"])
pointer = Path(os.environ["XET_POINTER"]).read_bytes()
root.mkdir(parents=True)
for index in range(10_000):
(root / f"flat-{index:05}.pointer").write_bytes(pointer)
for group in ("group-a", "group-b"):
directory = root / group
directory.mkdir()
for index in range(16):
(directory / f"item-{index:02}.pointer").write_bytes(pointer)
PY
aws s3api create-bucket \
--bucket crab-s3-gateway-listing-baseline >/dev/null
aws s3 cp qualification/listing \
s3://crab-s3-gateway-listing-baseline/main/qualification/listing/ \
--recursive --only-show-errors --no-progress
git add crab.toml .gitattributes qualification/listing
git commit -q -m 'add Xet range qualification fixture'
"${crab_bin}" push --upload-concurrency 0 \
origin HEAD:refs/heads/main
git show HEAD:qualification/xet-large.bin > "${xet_root}/xet-pointer"
git show HEAD:qualification/xet-duplicate.bin \
> "${xet_root}/xet-duplicate-pointer"
)
"${RUNNER_TEMP}/crab-s3-gateway-publisher-target/release/examples/s3_gateway_fixture" \
crab-s3-gateway-qualification repositories/qualification \
"${xet_root}/publisher-cache" \
"${source_root}/qualification/xet-large.bin" \
"${xet_root}/xet-pointer" \
"${source_root}/qualification/listing"
cp "${xet_root}/xet-pointer" "${xet_root}/xet-duplicate-pointer"
aws s3api create-bucket \
--bucket crab-s3-gateway-listing-baseline >/dev/null
aws s3 cp "${source_root}/qualification/listing" \
s3://crab-s3-gateway-listing-baseline/main/qualification/listing/ \
--recursive --only-show-errors --no-progress
grep -Eq '^version https://crab.build/spec/v1$' \
"${xet_root}/xet-pointer"
grep -Fx 'size 67108864' "${xet_root}/xet-pointer"
test "$(sed -n 's/^file-hash //p' "${xet_root}/xet-pointer")" = \
"$(sed -n 's/^file-hash //p' "${xet_root}/xet-duplicate-pointer")"
git -C "${source_root}" ls-tree -r --name-only HEAD \
qualification/listing | wc -l | tr -d ' ' \
find "${source_root}/qualification/listing" -type f | wc -l | tr -d ' ' \
> "${xet_root}/listing-object-count"
test "$(cat "${xet_root}/listing-object-count")" = 10032
git -C "${source_root}" ls-tree -r HEAD qualification/listing | \
awk '{print $3}' | sort -u | wc -l | tr -d ' ' \
find "${source_root}/qualification/listing" -type f -print0 | \
xargs -0 sha256sum | awk '{print $1}' | sort -u | wc -l | tr -d ' ' \
> "${xet_root}/listing-blob-count"
test "$(cat "${xet_root}/listing-blob-count")" = 1
aws --endpoint-url http://127.0.0.1:19000 s3api list-objects-v2 \
Expand Down
19 changes: 19 additions & 0 deletions CONTEXT.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,3 +100,22 @@ _Avoid_: Cache-warm or sparse-active Cell
An advisory, revision-pinned ranking or movement decision derived from signed
fleet capacity. It never grants ownership; Cell authority remains decisive.
_Avoid_: Ownership record or scheduler assignment
## Capsule protocol language

**Capsule**:
A content-addressed immutable object that co-locates one ref transaction with
its Git pack, authenticated indexes, and external Xorb/Shard dependency evidence.
Large-file payloads remain outside the capsule.
_Avoid_: Pack, because a capsule contains a Git pack plus non-pack evidence

**Repository root**:
The bounded mutable record for checkpoint, symbolic HEAD, GC, and maintenance
transitions. Ordinary branch publication uses independently conditional per-ref
heads rather than contending on this record.
_Avoid_: Manifest, when referring to the capsule-protocol storage protocol

**Checkpoint**:
An immutable repository view binding refs, indexes, and a layered pack set.
Stable pack bodies remain in their immutable sources; maintenance compacts a
bounded suffix instead of rewriting the complete repository.
_Avoid_: Snapshot, when referring to the stored capsule-protocol artifact
Loading
Loading