Skip to content

feat: add package-native repositories, branches, and reviews - #4

Merged
christse merged 23 commits into
mainfrom
codex/deck-fork-merge-pr-ux
Aug 22, 2026
Merged

christse merged 23 commits into
mainfrom
codex/deck-fork-merge-pr-ux

Conversation

@christse

Copy link
Copy Markdown
Collaborator

Background and goal

Deck is now a package-native collaboration and delivery system rather than only an at-rest package experiment. A mutable package is a Repository; a grouped Repository advances several independently addressed packages atomically. Branches, forks, Checkpoints, Reviews, every-save History, exact previews, and merge facts all live inside the realm and are inspectable through Deck Hub.

This change also makes the Boxel backport executable: the protocol is RRI-native, local and S3 storage responsibilities are separated, the sample collaboration realm is rebuilt by replaying real CLI/API operations, and the Hub exposes the same state through Browse, Run, Track, and Review.

Where to start

  • docs/deck-collaboration-protocol.md — protocol objects and invariants.
  • docs/deck-boxel-branch-index-backport.md — ordered Boxel backport and acceptance fixture.
  • packages/core/src/repository.ts, repository-store.ts, and review-store.ts — Repository, Checkpoint, branch-ref, Review, and merge mechanics.
  • scripts/replay-collaboration.mjs — realistic multi-party workflow expressed as replayable operations rather than checked-in state.
  • apps/hub/repository-service.mjs and apps/hub/hub/app/review/ — the real Hub workflow and inspectable underlying objects.

Key decisions and non-obvious mechanics

  • RRI is canonical identity; URLs are transport projections.
  • Every save belongs to History, while a Checkpoint is a deliberate collaboration boundary binding Repository, History, index generation, and parents.
  • Branches and forks share mechanics but retain different ownership language. Mutable branch heads use generation/CAS semantics; immutable objects are content addressed.
  • Reviews bind exact base, target, and source Checkpoints. A successful merge creates one two-parent Checkpoint; conflicts write neither the target ref nor working bytes.
  • Package Versions remain independently addressable and cacheable even when a Repository groups several packages into one atomic unit of work.
  • GitHub is an optional syndicated representation, not Deck's canonical remote or history model.

Verification

  • pnpm lint
  • DECKD_URL=http://127.0.0.1:1 pnpm test
  • 256 Deck Core tests, all package suites, and the disposable collaboration integration replay pass.

Chris and others added 23 commits August 12, 2026 20:02
Drop jj-cli so Timeline is deckd-only; Hub keeps browse on screen across view transitions, rehashes live integrity at serve time, and walks four teaching stories.

Co-authored-by: Cursor <cursoragent@cursor.com>
…oor.

Drop the sans-serif landing so start sits on the same lattice as the lenses; the book link uses the current-tab fill instead of a footnote.

Co-authored-by: Cursor <cursoragent@cursor.com>
…is deckd-only.

Drop dual-read of per-pack import maps so ranges and entry live only in package.json, keep those maps as lineage, and lean the depot lock. History is deckd; the jj CLI backend is gone.

Co-authored-by: Cursor <cursoragent@cursor.com>
@christse
christse merged commit 5eb2542 into main Aug 22, 2026
4 checks passed
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.

1 participant