radicle-heartwood-lfs/crates/radicle-cli/examples
Lorenz Leutgeb 3d352f23e6 canonical: Support Annotated Tags
The logic for computing canonical references conflated the semantics of
annotated and lighweight tags, yielding confusing/wrong results. The
main culprit was the call to `peel_to_commit` in
`impl ReadRepository for Repository`, peeling tag objects away.

To resolve this, we separate out quroum computation per object type: one
implementation for commits, and one for tags.

Also move  move canonical error types and methods into their own
module to have a cleaner file structure for the main logic.

Capture the `BTreeMap<Oid, u8>` type into a `Votes` struct, with its own API.

We were getting the objects from the repository twice – once in `Canonical::new`
and once again in `ensure_commit_or_tag` – so the latter was removed.

Use an `enum CanonicalObject` to specify which object types the canonical
process supports.

During `converges`, separate commits and tags, and ensure that we are only
looking at objects of one type. Note, that Fintan think this is actually the
*wrong* place to do it because we already filter the objects – so we should
keep track of that information higher up the callstack.

Co-authored-by: Fintan Halpenny <fintan.halpenny@gmail.com>
2025-08-04 17:00:54 +02:00
..
framework repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
git canonical: Support Annotated Tags 2025-08-04 17:00:54 +02:00
workflow canonical: Support Annotated Tags 2025-08-04 17:00:54 +02:00
rad-auth-errors.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-auth.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-block.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-checkout-repo-config-linux.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-checkout-repo-config-macos.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-checkout.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-clean.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-clone-all.md cli: Improve formatting of Node IDs and addresses 2025-07-18 21:44:06 +01:00
rad-clone-connect.md cli: Improve formatting of Node IDs and addresses 2025-07-18 21:44:06 +01:00
rad-clone-directory.md cli: Improve formatting of Node IDs and addresses 2025-07-18 21:44:06 +01:00
rad-clone-partial-fail.md cli: Improve formatting of Node IDs and addresses 2025-07-18 21:44:06 +01:00
rad-clone-unknown.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-clone.md cli: Improve formatting of Node IDs and addresses 2025-07-18 21:44:06 +01:00
rad-cob-log.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-cob-migrate.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-cob-multiset repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-cob-multiset.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-cob-show.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-cob-update-identity.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-cob-update.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-config.md radicle: Keep pinned repos ordered in config 2025-07-19 12:59:02 +01:00
rad-diff.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-fetch.md cli: Improve formatting of Node IDs and addresses 2025-07-18 21:44:06 +01:00
rad-fork.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-id-collaboration.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-id-conflict.md cli: Improve formatting of Node IDs and addresses 2025-07-18 21:44:06 +01:00
rad-id-missing-commits.md cli: test missing commits for canonical quorum 2025-07-19 12:32:45 +01:00
rad-id-multi-delegate.md cli: Improve formatting of Node IDs and addresses 2025-07-18 21:44:06 +01:00
rad-id-private.md cli: extract document update logic 2025-07-16 16:41:16 +02:00
rad-id-threshold-soft-fork.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-id-threshold.md canonical: Support Annotated Tags 2025-08-04 17:00:54 +02:00
rad-id-unknown-field.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-id-update-delete-field.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-id.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-inbox.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-init-detached-head.md cli: improve default branch pick 2025-07-23 07:43:27 +01:00
rad-init-existing.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-init-no-git.md cli: improve default branch pick 2025-07-23 07:43:27 +01:00
rad-init-no-seed.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-init-private-clone-seed.md cli: Improve formatting of Node IDs and addresses 2025-07-18 21:44:06 +01:00
rad-init-private-clone.md cli: Improve formatting of Node IDs and addresses 2025-07-18 21:44:06 +01:00
rad-init-private-no-seed.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-init-private-seed.md cli: Improve formatting of Node IDs and addresses 2025-07-18 21:44:06 +01:00
rad-init-private.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-init-sync-not-connected.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-init-sync-preferred.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-init-sync-timeout.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-init-sync.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-init-with-existing-remote.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-init.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-inspect-noauth.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-inspect.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-issue.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-merge-after-update.md canonical: Support Annotated Tags 2025-08-04 17:00:54 +02:00
rad-merge-no-ff.md canonical: Support Annotated Tags 2025-08-04 17:00:54 +02:00
rad-merge-via-push.md canonical: Support Annotated Tags 2025-08-04 17:00:54 +02:00
rad-node.md cli: Improve formatting of Node IDs and addresses 2025-07-18 21:44:06 +01:00
rad-patch-ahead-behind.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-patch-change-base.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-patch-checkout-force.md cli: Improve formatting of Node IDs and addresses 2025-07-18 21:44:06 +01:00
rad-patch-checkout-revision.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-patch-checkout.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-patch-delete.md cli: Improve formatting of Node IDs and addresses 2025-07-18 21:44:06 +01:00
rad-patch-detached-head.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-patch-diff.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-patch-draft.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-patch-edit.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-patch-fetch-1.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-patch-fetch-2.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-patch-merge-draft.md canonical: Support Annotated Tags 2025-08-04 17:00:54 +02:00
rad-patch-open-explore.md canonical: Support Annotated Tags 2025-08-04 17:00:54 +02:00
rad-patch-pull-update.md cli: Improve formatting of Node IDs and addresses 2025-07-18 21:44:06 +01:00
rad-patch-revert-merge.md canonical: Support Annotated Tags 2025-08-04 17:00:54 +02:00
rad-patch-update.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-patch-via-push.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-patch.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-publish.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-push-and-pull-patches.md cli: Improve formatting of Node IDs and addresses 2025-07-18 21:44:06 +01:00
rad-remote.md cli: Improve formatting of Node IDs and addresses 2025-07-18 21:44:06 +01:00
rad-review-by-hunk.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-seed-and-follow.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-seed-many.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-self.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-sync-without-node.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-sync.md cli: Improve formatting of Node IDs and addresses 2025-07-18 21:44:06 +01:00
rad-unseed-many.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-unseed.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00
rad-warn-old-nodes.md radicle-cli: Warn when using old names of nodes 2025-06-18 16:21:21 +02:00
rad-watch.md repo: Move workspace crates into `crates` subdirectory 2025-06-09 15:09:21 +02:00