Skip to content

chore: sync the fork with upstream main - #7

Merged
yordis merged 34 commits into
mainfrom
yordis/chore-sync-upstream
Sep 13, 2026
Merged

chore: sync the fork with upstream main#7
yordis merged 34 commits into
mainfrom
yordis/chore-sync-upstream

Conversation

@yordis

@yordis yordis commented Sep 13, 2026

Copy link
Copy Markdown
Member
  • Upstream retired the bundle runtime in favour of packfile URI delivery, so the fork's bundle-era maintain test and the local clippy allowances beside it guard nothing any more and would only conflict on every future sync.
  • What the fork exists for is untouched: the canary image pipeline, the pinned actions, the container protobuf fix and the test-tier watchdog.
  • The canary waits on the new contract job too, because a tag that claims to be the newest green main has to mean every gate main runs was green.

tobi and others added 30 commits September 11, 2026 03:11
Delete bundle routes, scheduler, crate, configuration, recipes and helpers. Preserve durable protobuf decoding and supported saved settings through a bounded read transition. Clone/fetch remain dynamic pending exact pack coverage and URI delivery.

Store depth: remove optional bundle-list GET from v2 capabilities and narrated fetch; remove bundle list GET/CAS and compose from maintenance/import. Push and checkpoint budgets unchanged.
Checkpoint publication remains four healthy requests. Old checkpoint descriptors require one metadata GET instead of guessing their refs path. Push and warm-ref budgets remain unchanged.
Classify, fold, freeze and re-segment exact committed inputs with additive output publication and final-only retirement. Preserve indexed objects, shared code/meta membership, isolated resumable scratch and bounded delta resources.

Maintenance adds one publication per physical output and a final seal CAS plus lease heartbeats. Ordinary push/read/checkpoint budgets are unchanged. Validated with Rust 1.97.1 just ci and 19 serial simulation cases.
Keep remote/gix and protected clients dynamic. Require authenticated exact live or retired membership for static pack/index bytes. Selection normally adds one coverage snapshot GET, with a shared three-attempt cap; index trailers are local bounded reads.
Port 123 model cases with exact negative controls and bounded JVM execution. Preserve unknown CAS outcomes, reject empty-ref pack publication, settle no-ops without history, and never replay ambiguous broker delivery. Claim nonces prevent content-token aliasing; exact lost-reply resolution adds one log GET only when the descriptor is listed.
Check raw indexed links in isolated cuts, repair invalid index identity with fresh inodes, and retain cross-process ownership through cancellation. Carry readiness only from a proven inventory and reject incomplete small downloads.

Store cost: healthy cached indexes remain zero reads; corruption adds an index GET (HEAD only for unknown old sizes). Four concurrent downloads, no LIST. Added local checksum cost on inventory open.

Validation: just ci (38 e2e), 19 serial simulations, 166 TLC cases, process-crash and corruption tests, final targeted Clippy.
Capture manifest/token/refs per CAS attempt, validate current indexes, and merge input/output OIDs with O(pack-count) cursors. Refuse lost unreachable objects or uncovered current tips before claiming a retirement log slot.

Cost: no extra store reads with valid warm indexes; cold/bad indexes add GETs (HEAD for unknown sizes), at most four concurrent downloads. Adds full local ref capture and streaming index scan per seal attempt. No pack materialization or LIST.

Validated with just ci (38 e2e), 19 serial simulations, 166 TLC cases and real-index refusal/recovery regression. Candidate push/import raw-boundary gates remain required.
A live commit-graph lock copied into rebuild scratch has no owner and prevents graph generation. Exclude Git lock files and test that the live source remains untouched. Prepare all race contenders before releasing any push, then assert exactly one winner.

Validation: local just ci passed, including 38 active end-to-end tests and the deterministic scratch lock regression.
…nserving-lifecycle

# Conflicts:
#	crates/walgit-server/src/rebuild.rs
…alidation

# Conflicts:
#	.github/workflows/ci.yml
…sure-cache

# Conflicts:
#	docs/spec/README.md
Remove bundle runtime and preserve ordinary Git clone/fetch
Add exact pack coverage and durable retirement foundations
Add conserving staged pack lifecycle and verified multi-pack bitmaps
Deliver proven packs through native Git URI negotiation
Check bounded publication contracts and correct ambiguous receipts
tobi and others added 3 commits September 12, 2026 19:35
Validate pack indexes, raw links and readiness across restart
Prove indexed conservation and current tips before retiring packs
Upstream removed the bundle runtime in favour of packfile URI delivery, so
the fork's bundle-era maintain test and the local clippy allowances beside
it guard nothing any more and would only conflict on every future sync.
What the fork exists for is untouched: the canary image pipeline, the
pinned actions, the container protobuf fix and the test-tier watchdog.

The canary now waits on the new contract job too, since a tag that claims
to be the newest green main has to mean every gate main runs was green.

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@cursor

cursor Bot commented Sep 13, 2026

Copy link
Copy Markdown

PR Summary

High Risk
Removes the bundle delivery stack and redefines maintenance, config, and acceptance criteria; incorrect rollout would break clones, compaction, and canary publishing gates.

Overview
Syncs with upstream main after walgit retired bundle-uri in favor of negotiated reusable packfiles (docs/PACKFILE_URI_DESIGN.md, migration in docs/PACKFILE_MIGRATION.md). The entire walgit-bundle crate and cron wiring are deleted from the workspace; server/CLI no longer depend on scheduled bundles, bundle lists, or bundle leases. Docs (AGENTS.md, GOAL.md, README.md) are rewritten around decisions D42–D49 (manifest-backed coverage, [packs] lifecycle, publication/cache evidence); clone/fetch during removal stay dynamic upload-pack.

CI now runs just sim and just smoke in the e2e job, adds a spec job (just spec + spec-evidence artifacts), and publish-canary waits on spec so the canary tag only moves when bounded contract checks pass. The Containerfile installs GNU coreutils (sort/comm for pack lifecycle) and drops bundle-era comments.

Reviewed by Cursor Bugbot for commit 5bda1e7. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitai Bot commented Sep 13, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 229 files, which is 129 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 311ee5c6-34b2-4a83-9927-d46cd6d24a2f

📥 Commits

Reviewing files that changed from the base of the PR and between 44c55c4 and 5bda1e7.

⛔ Files ignored due to path filters (2)
  • Cargo.lock is excluded by !**/*.lock
  • docs/spec/tlc/cases.tsv is excluded by !**/*.tsv
📒 Files selected for processing (229)
  • .github/workflows/ci.yml
  • AGENTS.md
  • Cargo.toml
  • Containerfile
  • GOAL.md
  • README.md
  • crates/walgit-bundle/Cargo.toml
  • crates/walgit-bundle/src/lib.rs
  • crates/walgit-bundle/src/ops.rs
  • crates/walgit-bundle/src/render.rs
  • crates/walgit-bundle/src/schedule.rs
  • crates/walgit-bundle/src/slots.rs
  • crates/walgit-bundle/tests/bundle.rs
  • crates/walgit-cli/Cargo.toml
  • crates/walgit-cli/src/bin/walgit.rs
  • crates/walgit-cli/src/bundle_cmd.rs
  • crates/walgit-cli/src/compact.rs
  • crates/walgit-cli/src/import_direct.rs
  • crates/walgit-cli/src/lib.rs
  • crates/walgit-cli/src/serve.rs
  • crates/walgit-config/Cargo.toml
  • crates/walgit-config/src/lib.rs
  • crates/walgit-config/src/packs.rs
  • crates/walgit-config/src/refs.rs
  • crates/walgit-git/src/lib.rs
  • crates/walgit-git/src/maintenance_input.rs
  • crates/walgit-git/src/midx.rs
  • crates/walgit-git/src/object_links.rs
  • crates/walgit-git/src/pack_groups.rs
  • crates/walgit-git/src/pack_segments.rs
  • crates/walgit-git/src/pack_segments_tests.rs
  • crates/walgit-git/src/packfile_uri.rs
  • crates/walgit-git/src/pkt.rs
  • crates/walgit-git/src/upload_gix.rs
  • crates/walgit-git/tests/common/mod.rs
  • crates/walgit-git/tests/ls_refs.rs
  • crates/walgit-git/tests/midx.rs
  • crates/walgit-git/tests/pack_groups.rs
  • crates/walgit-git/tests/upload_gix_remote.rs
  • crates/walgit-git/tests/upload_gix_scale.rs
  • crates/walgit-git/tests/upload_pack.rs
  • crates/walgit-proto/Cargo.toml
  • crates/walgit-proto/proto/walgit/v1/wal.proto
  • crates/walgit-proto/src/inventory.rs
  • crates/walgit-proto/src/lib.rs
  • crates/walgit-proto/src/snapshot.rs
  • crates/walgit-server/Cargo.toml
  • crates/walgit-server/src/bundles.rs
  • crates/walgit-server/src/cache.rs
  • crates/walgit-server/src/follow.rs
  • crates/walgit-server/src/forward.rs
  • crates/walgit-server/src/lfs.rs
  • crates/walgit-server/src/lib.rs
  • crates/walgit-server/src/maintain.rs
  • crates/walgit-server/src/ops.rs
  • crates/walgit-server/src/pack_lifecycle.rs
  • crates/walgit-server/src/packfile_uri.rs
  • crates/walgit-server/src/rebuild.rs
  • crates/walgit-server/src/settings.rs
  • crates/walgit-server/src/setup.rs
  • crates/walgit-server/src/smart.rs
  • crates/walgit-server/src/static_object.rs
  • crates/walgit-server/src/telemetry.rs
  • crates/walgit-server/src/web/login.rs
  • crates/walgit-server/src/web/ui.rs
  • crates/walgit-server/tests/api_v1.rs
  • crates/walgit-server/tests/e2e.rs
  • crates/walgit-server/tests/follow.rs
  • crates/walgit-server/tests/forward.rs
  • crates/walgit-server/tests/harness.rs
  • crates/walgit-server/tests/maintain.rs
  • crates/walgit-server/tests/packfile_uri.rs
  • crates/walgit-server/tests/routing_prefix.rs
  • crates/walgit-server/tests/sim.rs
  • crates/walgit-server/tests/static_http.rs
  • crates/walgit-server/tests/web_ui.rs
  • crates/walgit-store/src/fault.rs
  • crates/walgit-store/src/gcs.rs
  • crates/walgit-store/tests/contract.rs
  • crates/walgit-wal/Cargo.toml
  • crates/walgit-wal/src/checkpoint.rs
  • crates/walgit-wal/src/classification.rs
  • crates/walgit-wal/src/closure.rs
  • crates/walgit-wal/src/error.rs
  • crates/walgit-wal/src/handle.rs
  • crates/walgit-wal/src/index_cache.rs
  • crates/walgit-wal/src/lib.rs
  • crates/walgit-wal/src/log_reader.rs
  • crates/walgit-wal/src/publish.rs
  • crates/walgit-wal/src/registry.rs
  • crates/walgit-wal/src/remote.rs
  • crates/walgit-wal/src/snapshots.rs
  • crates/walgit-wal/src/sync.rs
  • crates/walgit-wal/tests/coverage.rs
  • crates/walgit-wal/tests/coverage_config.rs
  • crates/walgit-wal/tests/settings_migration.rs
  • crates/walgit-wal/tests/wal.rs
  • deploy/nginx.conf.example
  • docs/BUNDLE_URI_DESIGN.md
  • docs/CONTRACT.md
  • docs/INTEGRITY.md
  • docs/PACKFILE_MIGRATION.md
  • docs/PACKFILE_URI_DESIGN.md
  • docs/ROUNDTRIPS.md
  • docs/announcing-walgit.md
  • docs/patches/0001-bundle-uri-use-a-bundle-only-when-its-filter-matches.patch
  • docs/patches/README.md
  • docs/spec/README.md
  • docs/spec/WALContract.tla
  • docs/spec/scratch/BatchPublication.cfg
  • docs/spec/scratch/BatchPublication.tla
  • docs/spec/scratch/CacheDiscipline.tla
  • docs/spec/scratch/CacheDiscipline_fail_open.cfg
  • docs/spec/scratch/CacheDiscipline_fixed.cfg
  • docs/spec/scratch/CacheDiscipline_no_cancel_cleanup.cfg
  • docs/spec/scratch/CacheDiscipline_no_identity.cfg
  • docs/spec/scratch/CacheDiscipline_no_occupancy.cfg
  • docs/spec/scratch/CacheDiscipline_reader_uac.cfg
  • docs/spec/scratch/CacheDiscipline_skip_reprove.cfg
  • docs/spec/scratch/CacheDiscipline_sweep_entry.cfg
  • docs/spec/scratch/CacheDiscipline_trust_presence.cfg
  • docs/spec/scratch/CacheDiscipline_w_cancel.cfg
  • docs/spec/scratch/CacheDiscipline_w_prefetch.cfg
  • docs/spec/scratch/CacheDiscipline_w_sweep.cfg
  • docs/spec/scratch/ClosureProvenance.tla
  • docs/spec/scratch/ClosureProvenance_bug.cfg
  • docs/spec/scratch/ClosureProvenance_fix.cfg
  • docs/spec/scratch/ClosureProvenance_no_tip.cfg
  • docs/spec/scratch/ClosureProvenance_rival.cfg
  • docs/spec/scratch/ClosureProvenance_stale.cfg
  • docs/spec/scratch/ClosureProvenance_stale_retry.cfg
  • docs/spec/scratch/ClosureProvenance_stale_seal.cfg
  • docs/spec/scratch/FrontReplay.tla
  • docs/spec/scratch/FrontReplay_connect_lies.cfg
  • docs/spec/scratch/FrontReplay_fix.cfg
  • docs/spec/scratch/FrontReplay_no_precondition.cfg
  • docs/spec/scratch/FrontReplay_noop_publishes.cfg
  • docs/spec/scratch/FrontReplay_replay_ambiguous.cfg
  • docs/spec/scratch/LogSlotClaim.tla
  • docs/spec/scratch/LogSlotClaim_aba_deterministic.cfg
  • docs/spec/scratch/LogSlotClaim_burned_retry.cfg
  • docs/spec/scratch/LogSlotClaim_drop_ambiguous.cfg
  • docs/spec/scratch/LogSlotClaim_early_sweep.cfg
  • docs/spec/scratch/LogSlotClaim_fix.cfg
  • docs/spec/scratch/ManifestComposition.tla
  • docs/spec/scratch/ManifestComposition_fix.cfg
  • docs/spec/scratch/ManifestComposition_no_cp_guard.cfg
  • docs/spec/scratch/ManifestComposition_no_tips.cfg
  • docs/spec/scratch/ManifestComposition_stale_base_cp.cfg
  • docs/spec/scratch/ManifestComposition_stale_base_seal.cfg
  • docs/spec/scratch/PackCoverage.cfg
  • docs/spec/scratch/PackCoverage.tla
  • docs/spec/scratch/PackReplacement.cfg
  • docs/spec/scratch/PackReplacement.tla
  • docs/spec/scratch/PublicationView.tla
  • docs/spec/scratch/PublicationView_bug.cfg
  • docs/spec/scratch/PublicationView_fix.cfg
  • docs/spec/scratch/ReadinessCarry.tla
  • docs/spec/scratch/ReadinessCarry_annotate_waste.cfg
  • docs/spec/scratch/ReadinessCarry_apply_carry.cfg
  • docs/spec/scratch/ReadinessCarry_apply_waste.cfg
  • docs/spec/scratch/ReadinessCarry_birth_zero.cfg
  • docs/spec/scratch/ReadinessCarry_fixed.cfg
  • docs/spec/scratch/ReadinessCarry_fixed_no_sentinel.cfg
  • docs/spec/scratch/ReadinessCarry_fixed_opener.cfg
  • docs/spec/scratch/ReadinessCarry_fixed_opener_birth.cfg
  • docs/spec/scratch/ReadinessCarry_fixed_restarts.cfg
  • docs/spec/scratch/ReadinessCarry_no_carry.cfg
  • docs/spec/scratch/ReadinessCarry_open_log_loop.cfg
  • docs/spec/scratch/ReadinessCarry_open_log_opener.cfg
  • docs/spec/scratch/ReadinessCarry_open_log_push.cfg
  • docs/spec/scratch/ReadinessCarry_open_log_stale.cfg
  • docs/spec/scratch/ReadinessCarry_open_not_empty_ready.cfg
  • docs/spec/scratch/ReadinessCarry_open_waste.cfg
  • docs/spec/scratch/ReadinessCarry_packs_only.cfg
  • docs/spec/scratch/SnapshotAuthority.cfg
  • docs/spec/scratch/SnapshotAuthority.tla
  • docs/spec/scratch/TempReclaim.tla
  • docs/spec/scratch/TempReclaim_age_authority.cfg
  • docs/spec/scratch/TempReclaim_fixed.cfg
  • docs/spec/scratch/TempReclaim_inductive.cfg
  • docs/spec/scratch/TempReclaim_no_dead_reclaim.cfg
  • docs/spec/scratch/TempReclaim_no_drop_guard.cfg
  • docs/spec/scratch/TempReclaim_no_interlock.cfg
  • docs/spec/scratch/TempReclaim_no_sweep.cfg
  • docs/spec/scratch/TempReclaim_w_cancel.cfg
  • docs/spec/scratch/TempReclaim_w_dead.cfg
  • docs/spec/scratch/TempReclaim_w_full.cfg
  • docs/spec/scratch/TempReclaim_w_lane.cfg
  • docs/spec/scratch/TempReclaim_w_peer.cfg
  • docs/spec/scratch/WALCheckpoint.tla
  • docs/spec/scratch/WALCheckpoint_bug.cfg
  • docs/spec/scratch/WALCheckpoint_fix.cfg
  • docs/spec/tlc/MC.cfg
  • docs/spec/tlc/MC.tla
  • docs/spec/tlc/MCTrim.cfg
  • docs/spec/tlc/MCTrim.tla
  • docs/spec/tlc/MC_bug.cfg
  • docs/spec/tlc/MC_bug.tla
  • docs/spec/tlc/MC_fast.cfg
  • docs/spec/tlc/MC_incomplete.cfg
  • docs/spec/tlc/MC_incomplete.tla
  • docs/spec/tlc/MC_live.cfg
  • docs/spec/tlc/MC_notrim.cfg
  • flake.nix
  • justfile
  • scripts/check-tlc-result.sh
  • scripts/ensure-tla-tools.sh
  • scripts/run-spec.sh
  • scripts/test-spec-runner.sh
  • tests/e2e.sh
  • tests/git-bundle-filter.sh
  • tests/lib-auth.sh
  • walgit.example.toml
  • walgit.standalone.toml
  • web/API.md
  • web/sdk/repos.ts
  • web/src/api.ts
  • web/src/components/BundleChain.tsx
  • web/src/components/BundlePlan.tsx
  • web/src/components/CloneSetup.tsx
  • web/src/components/Maintainers.tsx
  • web/src/components/TasksOverlay.tsx
  • web/src/pages/ApiPage.tsx
  • web/src/pages/OverviewPage.tsx
  • web/src/pages/Repos.tsx
  • web/src/pages/SettingsPage.tsx
  • web/src/styles.css
  • web/vite.config.ts

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


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 054f985. Configure here.

Comment thread .github/workflows/ci.yml
The canary publish needs this job now, so its verdict decides whether a
main commit is treated as green and shipped. A moving tag in the job that
renders that verdict could pass a contract that never held, which is the
same reason the publishing job has been pinned all along.

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@yordis
yordis merged commit 205dd7c into main Sep 13, 2026
5 of 6 checks passed
@yordis
yordis deleted the yordis/chore-sync-upstream branch September 13, 2026 21:26
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