rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 heartwoodd42960742f877f3cc5fc2efe7973acdd2bcde903
{
"request": "trigger",
"version": 1,
"event_type": "patch",
"repository": {
"id": "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5",
"name": "heartwood",
"description": "Radicle Heartwood Protocol & Stack",
"private": false,
"default_branch": "master",
"delegates": [
"did:key:z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT",
"did:key:z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW",
"did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"did:key:z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz",
"did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz"
]
},
"action": "Created",
"patch": {
"id": "528ccc6d665da76318342a2b4e842b87311b8d24",
"author": {
"id": "did:key:z6MkgXNuhPc3jNxADSfr954yn7fjuzeukeSVdzEpmGmJnmnK",
"alias": "12b-bdz-dev"
},
"title": "add a test to repoduce an issue with patch merging",
"state": {
"status": "open",
"conflicts": []
},
"before": "352c29c23ce2560750369aa50bc9f43bf3019d3f",
"after": "d42960742f877f3cc5fc2efe7973acdd2bcde903",
"commits": [
"d42960742f877f3cc5fc2efe7973acdd2bcde903"
],
"target": "352c29c23ce2560750369aa50bc9f43bf3019d3f",
"labels": [],
"assignees": [],
"revisions": [
{
"id": "528ccc6d665da76318342a2b4e842b87311b8d24",
"author": {
"id": "did:key:z6MkgXNuhPc3jNxADSfr954yn7fjuzeukeSVdzEpmGmJnmnK",
"alias": "12b-bdz-dev"
},
"description": "This is to reproduce the issue discussed in https://radicle.zulipchat.com/#narrow/channel/369873-Support/topic/Merged.20patch.20still.20appears.20open.20and.20not.20merged/with/562986406",
"base": "352c29c23ce2560750369aa50bc9f43bf3019d3f",
"oid": "d42960742f877f3cc5fc2efe7973acdd2bcde903",
"timestamp": 1765400854
}
]
}
}
{
"response": "triggered",
"run_id": {
"id": "c63e7d21-fe2c-478f-954a-ecbb9df761f2"
},
"info_url": "https://cci.rad.levitte.org//c63e7d21-fe2c-478f-954a-ecbb9df761f2.html"
}
Started at: 2025-12-10 22:07:59.676900+01:00
Commands:
$ rad clone rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 .
✓ Creating checkout in ./...
✓ Remote cloudhead@z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT added
✓ Remote-tracking branch cloudhead@z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT/master created for z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT
✓ Remote cloudhead@z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW added
✓ Remote-tracking branch cloudhead@z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW/master created for z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW
✓ Remote fintohaps@z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM added
✓ Remote-tracking branch fintohaps@z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM/master created for z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM
✓ Remote erikli@z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz added
✓ Remote-tracking branch erikli@z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz/master created for z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz
✓ Remote lorenz@z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz added
✓ Remote-tracking branch lorenz@z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz/master created for z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz
✓ Repository successfully cloned under /opt/radcis/ci.rad.levitte.org/cci/state/c63e7d21-fe2c-478f-954a-ecbb9df761f2/w/
╭────────────────────────────────────╮
│ heartwood │
│ Radicle Heartwood Protocol & Stack │
│ 129 issues · 10 patches │
╰────────────────────────────────────╯
Run `cd ./.` to go to the repository directory.
Exit code: 0
$ rad patch checkout 528ccc6d665da76318342a2b4e842b87311b8d24
✓ Switched to branch patch/528ccc6 at revision 528ccc6
✓ Branch patch/528ccc6 setup to track rad/patches/528ccc6d665da76318342a2b4e842b87311b8d24
Exit code: 0
$ git config advice.detachedHead false
Exit code: 0
$ git checkout d42960742f877f3cc5fc2efe7973acdd2bcde903
HEAD is now at d4296074 add a test to repoduce an issue with patch merging
Exit code: 0
$ git show d42960742f877f3cc5fc2efe7973acdd2bcde903
commit d42960742f877f3cc5fc2efe7973acdd2bcde903
Author: Fabrice Bellamy <fabrice.bellamy@distrilab.fr>
Date: Wed Dec 10 22:06:08 2025 +0100
add a test to repoduce an issue with patch merging
diff --git a/crates/radicle-cli/examples/workflow-2/1-new-project.md b/crates/radicle-cli/examples/workflow-2/1-new-project.md
new file mode 120000
index 00000000..e2094cdd
--- /dev/null
+++ b/crates/radicle-cli/examples/workflow-2/1-new-project.md
@@ -0,0 +1 @@
+../rad-init.md
\ No newline at end of file
diff --git a/crates/radicle-cli/examples/workflow-2/2-cloning.md b/crates/radicle-cli/examples/workflow-2/2-cloning.md
new file mode 120000
index 00000000..8e7337ec
--- /dev/null
+++ b/crates/radicle-cli/examples/workflow-2/2-cloning.md
@@ -0,0 +1 @@
+../rad-clone.md
\ No newline at end of file
diff --git a/crates/radicle-cli/examples/workflow-2/3-delegate.md b/crates/radicle-cli/examples/workflow-2/3-delegate.md
new file mode 100644
index 00000000..74b426b9
--- /dev/null
+++ b/crates/radicle-cli/examples/workflow-2/3-delegate.md
@@ -0,0 +1,40 @@
+Alice adds Bob as a delegate using their DID,
+`did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk`, (keeping threshold to `1`).
+
+```
+$ rad id update --title "Add Bob" --description "Add Bob as a delegate" --delegate did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
+✓ Identity revision 7be665f9fccba97abb21b2fa85a6fd3181c72858 created
+╭────────────────────────────────────────────────────────────────────────╮
+│ Title Add Bob │
+│ Revision 7be665f9fccba97abb21b2fa85a6fd3181c72858 │
+│ Blob 93d3009787e5d8a481dffc4dd248ea46af592466 │
+│ Author did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi │
+│ State accepted │
+│ Quorum yes │
+│ │
+│ Add Bob as a delegate │
+├────────────────────────────────────────────────────────────────────────┤
+│ ✓ did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi alice (you) │
+╰────────────────────────────────────────────────────────────────────────╯
+
+@@ -1,13 +1,14 @@
+ {
+ "payload": {
+ "xyz.radicle.project": {
+ "defaultBranch": "master",
+ "description": "Radicle Heartwood Protocol & Stack",
+ "name": "heartwood"
+ }
+ },
+ "delegates": [
+- "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi"
++ "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi",
++ "did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk"
+ ],
+ "threshold": 1
+ }
+```
+
+alice should not need to follow bob, and then create
+a tracking branch in its working copy, using the `rad remote add`,
+because by default its policy scope is `all`
diff --git a/crates/radicle-cli/examples/workflow-2/4-patch-create.md b/crates/radicle-cli/examples/workflow-2/4-patch-create.md
new file mode 100644
index 00000000..2918a362
--- /dev/null
+++ b/crates/radicle-cli/examples/workflow-2/4-patch-create.md
@@ -0,0 +1,61 @@
+Here Alice will create a patch, to latter be merged by Bob who has been added as delegate
+
+```
+$ git checkout -b flux-capacitor-power
+$ touch REQUIREMENTS
+```
+
+Here the instructions are added to the project's `REQUIREMENTS` for 1.21
+gigawatts and committed with git.
+
+```
+$ git add REQUIREMENTS
+$ git commit -v -m "Define power requirements"
+[flux-capacitor-power 250d1e0] Define power requirements
+ 1 file changed, 0 insertions(+), 0 deletions(-)
+ create mode 100644 heartwood/REQUIREMENTS
+```
+
+Once the code is ready, we open a patch with our changes.
+
+``` (stderr)
+$ git push rad -o no-sync -o patch.message="Define power requirements" -o patch.message="See details." HEAD:refs/patches
+✓ Patch 19ebdb34e07740eeb6c12c6dcbc2a41ccca189aa opened
+To rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
+ * [new reference] HEAD -> refs/patches
+```
+
+It will now be listed as one of the project's open patches.
+
+```
+$ rad patch
+╭─────────────────────────────────────────────────────────────────────────────────────────╮
+│ ● ID Title Author Reviews Head + - Updated │
+├─────────────────────────────────────────────────────────────────────────────────────────┤
+│ ● 19ebdb3 Define power requirements alice (you) - - 250d1e0 +0 -0 now │
+╰─────────────────────────────────────────────────────────────────────────────────────────╯
+$ rad patch show 19ebdb3
+╭────────────────────────────────────────────────────╮
+│ Title Define power requirements │
+│ Patch 19ebdb34e07740eeb6c12c6dcbc2a41ccca189aa │
+│ Author alice (you) │
+│ Head 250d1e07fe567ea34c8d90be75b367cb97a151da │
+│ Base [.. ] │
+│ Branches flux-capacitor-power │
+│ Commits ahead 1, behind 0 │
+│ Status open │
+│ │
+│ See details. │
+├────────────────────────────────────────────────────┤
+│ 250d1e0 Define power requirements │
+├────────────────────────────────────────────────────┤
+│ ● Revision 19ebdb3 @ 250d1e0 by alice (you) now │
+╰────────────────────────────────────────────────────╯
+```
+
+We can also confirm that the patch branch is in storage:
+
+```
+$ git ls-remote rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi refs/heads/patches/*
+250d1e07fe567ea34c8d90be75b367cb97a151da refs/heads/patches/19ebdb34e07740eeb6c12c6dcbc2a41ccca189aa
+```
diff --git a/crates/radicle-cli/examples/workflow-2/5-patch-merge.md b/crates/radicle-cli/examples/workflow-2/5-patch-merge.md
new file mode 100644
index 00000000..1e9b876f
--- /dev/null
+++ b/crates/radicle-cli/examples/workflow-2/5-patch-merge.md
@@ -0,0 +1,88 @@
+Bob, who has just been added as a delegate will now merge the patch created by Alice
+
+```
+$ rad sync -f
+Fetching rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji from the network, found 1 potential seed(s).
+✓ Target met: 1 seed(s)
+🌱 Fetched from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
+$ git branch -r
+ alice@z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/master
+ rad/master
+$ rad patch list --open
+╭───────────────────────────────────────────────────────────────────────────────────────────────────╮
+│ ● ID Title Author Reviews Head + - Updated │
+├───────────────────────────────────────────────────────────────────────────────────────────────────┤
+│ ● 19ebdb3 Define power requirements alice z6MknSL…StBU8Vi - - 250d1e0 +0 -0 now │
+╰───────────────────────────────────────────────────────────────────────────────────────────────────╯
+$ rad patch show 19ebdb3
+╭───────────────────────────────────────────────────────────╮
+│ Title Define power requirements │
+│ Patch 19ebdb34e07740eeb6c12c6dcbc2a41ccca189aa │
+│ Author alice z6MknSL…StBU8Vi │
+│ Head 250d1e07fe567ea34c8d90be75b367cb97a151da │
+│ Base f2de534b5e81d7c6e2dcaf58c3dd91573c0a0354 │
+│ Commits ahead 1, behind 0 │
+│ Status open │
+│ │
+│ See details. │
+├───────────────────────────────────────────────────────────┤
+│ 250d1e0 Define power requirements │
+├───────────────────────────────────────────────────────────┤
+│ ● Revision 19ebdb3 @ 250d1e0 by alice z6MknSL…StBU8Vi now │
+╰───────────────────────────────────────────────────────────╯
+```
+
+```
+$ rad patch checkout 19ebdb3
+✓ Switched to branch patch/19ebdb3 at revision 19ebdb3
+✓ Branch patch/19ebdb3 setup to track rad/patches/19ebdb34e07740eeb6c12c6dcbc2a41ccca189aa
+```
+
+bob accepts and merges the code.
+
+```
+$ rad patch review 19ebdb3 --revision 19ebdb3 --accept
+✓ Patch 19ebdb3 accepted
+✓ Synced with 1 seed(s)
+$ git checkout master
+Your branch is up to date with 'rad/master'.
+$ git merge patch/19ebdb3
+Updating f2de534..250d1e0
+Fast-forward
+ heartwood/REQUIREMENTS | 0
+ 1 file changed, 0 insertions(+), 0 deletions(-)
+ create mode 100644 heartwood/REQUIREMENTS
+```
+``` (stderr)
+$ git push rad master
+✓ Patch 19ebdb34e07740eeb6c12c6dcbc2a41ccca189aa merged at revision 250d1e0
+✓ Canonical reference refs/heads/master updated to target commit 250d1e07fe567ea34c8d90be75b367cb97a151da
+✓ Synced with 1 seed(s)
+To rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
+ f2de534..250d1e0 master -> master
+```
+
+The patch is now merged and closed :).
+
+```
+$ rad patch show 19ebdb3
+╭───────────────────────────────────────────────────────────╮
+│ Title Define power requirements │
+│ Patch 19ebdb34e07740eeb6c12c6dcbc2a41ccca189aa │
+│ Author alice z6MknSL…StBU8Vi │
+│ Head 250d1e07fe567ea34c8d90be75b367cb97a151da │
+│ Base f2de534b5e81d7c6e2dcaf58c3dd91573c0a0354 │
+│ Commits ahead 1, behind 0 │
+│ Status merged │
+│ │
+│ See details. │
+├───────────────────────────────────────────────────────────┤
+│ 250d1e0 Define power requirements │
+├───────────────────────────────────────────────────────────┤
+│ ● Revision 19ebdb3 @ 250d1e0 by alice z6MknSL…StBU8Vi now │
+╰───────────────────────────────────────────────────────────╯
+```
+
+
+
+
diff --git a/crates/radicle-cli/tests/commands.rs b/crates/radicle-cli/tests/commands.rs
index d5278763..e701c166 100644
--- a/crates/radicle-cli/tests/commands.rs
+++ b/crates/radicle-cli/tests/commands.rs
@@ -2817,3 +2817,46 @@ fn rad_workflow() {
)
.unwrap();
}
+
+#[test]
+fn rad_workflow_2() {
+ let mut environment = Environment::new();
+ let alice = environment.node("alice");
+ let bob = environment.node("bob");
+
+ environment.repository(&alice);
+
+ environment.test("workflow-2/1-new-project", &alice).unwrap();
+
+ let alice = alice.spawn();
+ let mut bob = bob.spawn();
+
+ bob.connect(&alice).converge([&alice]);
+
+ environment.test("workflow-2/2-cloning", &bob).unwrap();
+
+ test(
+ "examples/workflow-2/3-delegate.md",
+ environment.work(&alice).join("heartwood"),
+ Some(&alice.home),
+ [],
+ )
+ .unwrap();
+
+ test(
+ "examples/workflow-2/4-patch-create.md",
+ environment.work(&alice).join("heartwood"),
+ Some(&alice.home),
+ [],
+ )
+ .unwrap();
+
+ test(
+ "examples/workflow-2/5-patch-merge.md",
+ environment.work(&bob).join("heartwood"),
+ Some(&bob.home),
+ [],
+ )
+ .unwrap();
+
+}
Exit code: 0
shell: 'export RUSTDOCFLAGS=''-D warnings'' cargo --version rustc --version cargo fmt --check cargo clippy --all-targets --workspace -- --deny warnings cargo build --all-targets --workspace cargo doc --workspace --no-deps --all-features cargo test --workspace --no-fail-fast '
Commands:
$ podman run --name c63e7d21-fe2c-478f-954a-ecbb9df761f2 -v /opt/radcis/ci.rad.levitte.org/cci/state/c63e7d21-fe2c-478f-954a-ecbb9df761f2/s:/c63e7d21-fe2c-478f-954a-ecbb9df761f2/s:ro -v /opt/radcis/ci.rad.levitte.org/cci/state/c63e7d21-fe2c-478f-954a-ecbb9df761f2/w:/c63e7d21-fe2c-478f-954a-ecbb9df761f2/w -w /c63e7d21-fe2c-478f-954a-ecbb9df761f2/w -v /opt/radcis/ci.rad.levitte.org/.radicle:/${id}/.radicle:ro -e RAD_HOME=/${id}/.radicle rust:bookworm bash /c63e7d21-fe2c-478f-954a-ecbb9df761f2/s/script.sh
+ export 'RUSTDOCFLAGS=-D warnings'
+ RUSTDOCFLAGS='-D warnings'
+ cargo --version
info: syncing channel updates for '1.90-x86_64-unknown-linux-gnu'
info: latest update on 2025-09-18, rust version 1.90.0 (1159e78c4 2025-09-14)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
info: downloading component 'rust-src'
info: downloading component 'rust-std'
info: downloading component 'rustc'
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
info: installing component 'rust-src'
info: installing component 'rust-std'
info: installing component 'rustc'
info: installing component 'rustfmt'
cargo 1.90.0 (840b83a10 2025-07-30)
+ rustc --version
rustc 1.90.0 (1159e78c4 2025-09-14)
+ cargo fmt --check
Diff in /c63e7d21-fe2c-478f-954a-ecbb9df761f2/w/crates/radicle-cli/tests/commands.rs:2826:
environment.repository(&alice);
- environment.test("workflow-2/1-new-project", &alice).unwrap();
+ environment
+ .test("workflow-2/1-new-project", &alice)
+ .unwrap();
let alice = alice.spawn();
let mut bob = bob.spawn();
Diff in /c63e7d21-fe2c-478f-954a-ecbb9df761f2/w/crates/radicle-cli/tests/commands.rs:2858:
[],
)
.unwrap();
-
}
Exit code: 1
{
"response": "finished",
"result": "failure"
}