Radicle repository id rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5
{
"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": "Updated",
"patch": {
"id": "c54883e5ffb1f8a99f432e3ac79c0b728cd0dab3",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": "fintohaps"
},
"title": "Canonical References",
"state": {
"status": "open",
"conflicts": []
},
"before": "f30760d6bb86d2978a5ed4df8ee45b9aa97778b4",
"after": "8d0821554a3ce0f26e36dd4c85206d987e1ff2e6",
"commits": [
"8d0821554a3ce0f26e36dd4c85206d987e1ff2e6",
"cb1da59cf44b61da1ac6ec1a9d256c137c1192ec",
"b9c05c739e9dc56742375972d91f5ddb67592db5",
"30024882bc649e6503b825c054e09fd4cee6744c",
"5bb8800f7de38d92c6bb97a22e328cafb750a0e3",
"d9376bf6bc8cb127003c4d2fd3f85b61e9da3b7e"
],
"target": "f30760d6bb86d2978a5ed4df8ee45b9aa97778b4",
"labels": [],
"assignees": [
"did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz"
],
"revisions": [
{
"id": "c54883e5ffb1f8a99f432e3ac79c0b728cd0dab3",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": "fintohaps"
},
"description": "See RIP-0004[^0] for the specification.\n\nThis patch is an implementation of RIP-0004. It implements the rules mechanism\nwithin the `rules` module. This is interplays with the existing `canonical`\nmechanisms, already defined (but slightly refactored).\n\nThe `rules` are then used in pushing and fetching references. A test is added to\nillustrate the canonical references in action via tags.\n\nThere were some incidental changes that were made to ensure the tags use case is\neasy for users. The first change was to add a tags refspec to remotes in order\nto easily fetch tags from peers -- as well ensuring those tags do not pollute\nthe `refs/tags` namespace in the working copy.\n\nThis had a knock on change where there was a bug `libgit2` that didn't allow for\ndeleting `multivar` entries, which the new remote setup fell under. This was\nfixed and so we update to `git2-0.19`.\n\nAs well this, the `rad id update` command would error if the payload identifier\nwas not the project identifier. This would stop adding new payloads to extend\nthe identity -- which was needed for introducing canonical references.\n\n[^0]: https://app.radicle.xyz/nodes/seed.radicle.garden/rad:z3trNYnLWS11cJWC6BbxDs5niGo82/patches/1d1ce874f7c39ecdcd8c318bbae46ffd02fe1ea8?tab=changes",
"base": "54551b117435a006acddefbf3850b02d6ee84ffa",
"oid": "3e978375aea43528b0ed72d94ca86458ae46d602",
"timestamp": 1721297970
},
{
"id": "c1a2cc5787f44c0a835c1deae375be04c399dd7e",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": "fintohaps"
},
"description": "Major Update\n\nSee commits for all details, but basically it was the yak shave of a lifetime.",
"base": "c8fbcf2a7aeb0dc8b5c2f709532ae464fedc3677",
"oid": "58e932ce964e1bbe9eb148203f3e125bbab3cca1",
"timestamp": 1725375337
},
{
"id": "c55494efc2e780cd6c91a1f90efdae8a3eb1c7ef",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": "fintohaps"
},
"description": "Changes:\n- Remove use of `--tags` flag in `git-tag` test\n- Use `EntryKey` instead of `ObjectId` in `ChangeGraph` to simplify\n getting the root entry. This means that `timestamp_of` is only used\n in the `GraphBuilder`.",
"base": "c8fbcf2a7aeb0dc8b5c2f709532ae464fedc3677",
"oid": "1b07774def93c135e5f43367de672a36aafab4dd",
"timestamp": 1727169095
},
{
"id": "583e6b3366c36cc7e67910c29a66750397a60484",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": "fintohaps"
},
"description": "Changes:\n- Introduce `VersionGroupId`\n- Update test SHAs\n- Handle ordering case in identity test, where we expect the commit to\n happen later (uses unsafe and manipulating env var)\n- Introduce migration code for `Doc`s\n- Introduce `rad id migrate`",
"base": "c8fbcf2a7aeb0dc8b5c2f709532ae464fedc3677",
"oid": "fdd52771765ae0b19a057da61b69034b188f84e3",
"timestamp": 1728573242
},
{
"id": "d54ddef216909bdd3e54e33e4f82c45df79c00d3",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": "fintohaps"
},
"description": "Changes:\n- Rebased on [Patch 52f287f50c5d62c815bf3878b398b708f60c9b46](https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/patches/52f287f50c5d62c815bf3878b398b708f60c9b46?tab=activity)\n- Removed `VersionGroupId``",
"base": "0c9a7419dcfd265b6c1efe85c915d126feaef649",
"oid": "f24f9d89018bf3b074032e68bc77a0dc6aa5c1e1",
"timestamp": 1729873668
},
{
"id": "ac48ae6e75d4eaa13daed657eed24dfeabb9be94",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": "fintohaps"
},
"description": "Changes:\n- Rebased on c7f00b1c\n- Missing commit for incorporating rules into identity doc",
"base": "c7f00b1c6cebd2adeb1738f061990bd131804ca7",
"oid": "7d8e4616ebe40839401562a2ad8f98ec8ddcef9e",
"timestamp": 1730283252
},
{
"id": "2b31e460db7451376dc3e346ee02b5fd597fa5c6",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": "fintohaps"
},
"description": "Changes:\n- Fixups in documentation and tests",
"base": "c7f00b1c6cebd2adeb1738f061990bd131804ca7",
"oid": "040cfb712250461a1878293e02f47e2cb9694233",
"timestamp": 1730286464
},
{
"id": "e1c360a1311a0a215bed6eb42e4b0c8c5c44e611",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": "fintohaps"
},
"description": "Changes:\n- Disallow `rad/sigrefs` rule\n- Add test for failing validation with `rad/id` and `rad/sigrefs`",
"base": "c7f00b1c6cebd2adeb1738f061990bd131804ca7",
"oid": "f0dec88a89d65d0bdae8c422e9f3211554b7206a",
"timestamp": 1731322110
},
{
"id": "492cfbafd31e4bac85ee73af519ddc6254b47f82",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": "fintohaps"
},
"description": "Changes:\n- Rename delegates field and type to `allow` and `Allowed`\n- Rename token from `$identity` to `delegates`\n- Use `BTreeMap`s instead of `Vec`.\n * This required rethinking using `QualifiedPattern`, and instead using a\n newtype, `Pattern`, that implemented `Ord` by specificity.\n * `Pattern` also disqualifies any use of `refs/rad`\n- Add `From<Did> for doc::Delegates` to infallibly construct the set with a\n single `Did`.\n- Changes `extensions` to a JSON map\n- Derive `Deserialize` for `Rule`, but only via the private `Sealed` trait\n- Changed the `FnMut` resolve callback to be `Fn`\n- Required updating all the `radicle-cli` tests\n- Added other QoL API improvements",
"base": "0c9a7419dcfd265b6c1efe85c915d126feaef649",
"oid": "f9cb27f65430abbbc549521240054e3e0297cb53",
"timestamp": 1738339341
},
{
"id": "fbdf18d7683bdac7a76149777eed5cf9bbbf5bd5",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": "fintohaps"
},
"description": "Rebased on master @ 3b5fac178eaf9bca639fbd0c1df0c68619a7f51f",
"base": "3b5fac178eaf9bca639fbd0c1df0c68619a7f51f",
"oid": "2a6475510a438726189500457d33887872785366",
"timestamp": 1738750291
},
{
"id": "4baf32afd65f2c4b374d8f21fed6877aa804a003",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": "fintohaps"
},
"description": "Changes:\n- Document `RawCanonicalRefs` and `CanonicalRefs`",
"base": "3b5fac178eaf9bca639fbd0c1df0c68619a7f51f",
"oid": "0cecae660273ab0c31f481d9078b2d93f0a78965",
"timestamp": 1738750973
},
{
"id": "d2ebc70caca54a8ba508d72862c1e1c79d718129",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": "fintohaps"
},
"description": "Changes:\n- Rebased\n- Rename `canonical-ref` to `cref`\n- Order enum variant in `canonical-ref.rs`\n- Fix wording in example tests\n- Avoid removing `rad-config` tests\n- Use `saturating_sub` for `threshold` calculation in `radicle-fetch`",
"base": "7eb07e1b4d57ddb4660d0363691877fe893af044",
"oid": "4515d452ab9ca812825572e38700b5be5eec21ae",
"timestamp": 1744810962
},
{
"id": "13e9ba641c624db26b6bfe85870daf064f90e9ab",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": "fintohaps"
},
"description": "Rebased",
"base": "f30760d6bb86d2978a5ed4df8ee45b9aa97778b4",
"oid": "045e4654b281379a968b6b8a8f50639c3d29f2fe",
"timestamp": 1745855085
},
{
"id": "47495c408ccf5eec49b61c7bdb339e5f2d695a30",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": "fintohaps"
},
"description": "Changes:\n- Stricter version parsing\n- Using `VersionedRawDoc` to enumerate each version of the `RawDoc`s\n- Singleton approach for version numbers in the docs\n- Better renaming of CLI cref module\n- Fix docs for `rad id migrate`",
"base": "f30760d6bb86d2978a5ed4df8ee45b9aa97778b4",
"oid": "a6be35592e8c78100b76da9832d19ffff035ed21",
"timestamp": 1746037637
},
{
"id": "e3bdb65d3adb94360dd3449744792f6ecb1f451f",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": "fintohaps"
},
"description": "Changes:\n- Remove `MatchedRule`\n- Refactoring of `Canonical`\n- General fixes",
"base": "f30760d6bb86d2978a5ed4df8ee45b9aa97778b4",
"oid": "8d0821554a3ce0f26e36dd4c85206d987e1ff2e6",
"timestamp": 1746548066
}
]
}
}[2025-05-06T16:20:12Z INFO ambient] ambient starts
[2J[01;01H[=3h[2J[01;01H[2J[01;01H[=3h[2J[01;01HBdsDxe: failed to load Boot0001 "UEFI QEMU DVD-ROM QM00003 " from PciRoot(0x0)/Pci(0x1,0x1)/Ata(Secondary,Master,0x0): Not Found
BdsDxe: loading Boot0002 "UEFI Misc Device" from PciRoot(0x0)/Pci(0x2,0x0)
BdsDxe: starting Boot0002 "UEFI Misc Device" from PciRoot(0x0)/Pci(0x2,0x0)
[0m[30m[47mWelcome to GRUB!
[0m[37m[40m[0m[30m[40m[2J[01;01H[0m[37m[40mINFO: Extracting tar archive from /dev/vdb
./
./plan.yaml
./run-ci
INFO: Running run-ci from /dev/vdb
================================ BEGIN ================================
ambient-execute-plan starts
RunnablePlan::from_file: filename=plan.yaml
steps:
- action: mkdir
pathname: /workspace
- action: mkdir
pathname: /workspace/artifacts
- action: tar_extract
archive: /dev/vdc
directory: /workspace/src
- action: tar_extract
archive: /dev/vdf
directory: /workspace/deps
- action: tar_extract
archive: /dev/vde
directory: /workspace/cache
- action: spawn
argv:
- find
- /workspace
- '-maxdepth'
- '2'
- '-ls'
- action: cargo_fmt
- action: cargo_clippy
- action: cargo_build
- action: cargo_test
- action: shell
shell: |
# Because of a (temporary) limitation in Ambient, we need to set
# these variables manually. Once Ambient manages environment
# variables better, these can be deleted.
export CARGO_TARGET_DIR=/workspace/cache
export CARGO_HOME=/workspace/deps
export HOME=/root
export PATH="/root/.cargo/bin:$PATH"
cargo doc --workspace --no-deps
- action: shell
shell: |
# Because of a (temporary) limitation in Ambient, we need to set
# these variables manually. Once Ambient manages environment
# variables better, these can be deleted.
export CARGO_TARGET_DIR=/workspace/cache
export CARGO_HOME=/workspace/deps
export HOME=/root
export PATH="/root/.cargo/bin:$PATH"
# These are based on debian/control.
export DEBEMAIL=liw@liw.fi
export DEBFULLNAME="Lars Wirzenius"
# Clean up after tests and documentation building. The Debian
# package building tools do not want changes outside the
# `debian` directory, compared to what is committed to Git, from
# which the "upstream tarball" is created.
git reset --hard
git clean -fdx
git status --ignored
# Update debian/changelog with a new version so that every run
# creates a newer version. This avoids us having to update the
# file manually for every CI run.
V="$(dpkg-parsechangelog -SVersion | sed 's/-[^-]*$//')"
T="$(date -u "+%Y%m%dT%H%M%S")"
version="$V.ci$T-1"
dch -v "$version" "CI build under Ambient."
dch -r ''
- action: deb
- action: tar_create
archive: /dev/vde
directory: /workspace/cache
- action: tar_create
archive: /dev/vdd
directory: /workspace/artifacts
executor_drive: /dev/vdb
source_drive: /dev/vdc
artifact_drive: /dev/vdd
cache_drive: /dev/vde
deps_drive: /dev/vdf
workspace_dir: /workspace
source_dir: /workspace/src
deps_dir: /workspace/deps
cache_dir: /workspace/cache
artifacts_dir: /workspace/artifacts
RUN: Action Mkdir {
pathname: "/workspace",
}
RUN: Action finished OK
RUN: Action Mkdir {
pathname: "/workspace/artifacts",
}
RUN: Action finished OK
RUN: Action TarExtract {
archive: "/dev/vdc",
directory: "/workspace/src",
}
RUN: Action finished OK
RUN: Action TarExtract {
archive: "/dev/vdf",
directory: "/workspace/deps",
}
RUN: Action finished OK
RUN: Action TarExtract {
archive: "/dev/vde",
directory: "/workspace/cache",
}
RUN: Action finished OK
RUN: Action Spawn {
argv: [
"find",
"/workspace",
"-maxdepth",
"2",
"-ls",
],
}
SPAWN: argv=["find", "/workspace", "-maxdepth", "2", "-ls"]
cwd=/workspace/src (exists? true)
extra_env=[]
131073 4 drwxr-xr-x 6 root root 4096 May 6 16:16 /workspace
131074 4 drwxr-xr-x 2 root root 4096 May 6 16:16 /workspace/artifacts
131819 4 drwxr-xr-x 3 root root 4096 May 6 16:14 /workspace/deps
131822 4 drwxr-xr-x 5 root root 4096 Apr 11 13:20 /workspace/deps/registry
131820 172 -rw-r--r-- 1 root root 176128 May 6 16:14 /workspace/deps/.global-cache
131821 0 -rw-r--r-- 1 root root 0 Apr 11 13:20 /workspace/deps/.package-cache
169636 4 drwxr-xr-x 6 root root 4096 Apr 22 15:00 /workspace/cache
169638 4 drwxr-xr-x 7 root root 4096 May 5 12:59 /workspace/cache/debug
786433 4 drwxr-xr-x 7 root root 4096 May 5 13:03 /workspace/cache/release
169637 4 drwxr-xr-x 2 root root 4096 Apr 22 14:53 /workspace/cache/tmp
170661 4 drwxr-xr-x 30 root root 4096 May 5 13:02 /workspace/cache/doc
170659 4 -rw-r--r-- 1 root root 218 Apr 22 15:00 /workspace/cache/.rustdoc_fingerprint.json
170660 4 -rw-r--r-- 1 root root 1033 May 5 12:59 /workspace/cache/.rustc_info.json
131075 4 drwxr-xr-x 25 root root 4096 May 6 16:14 /workspace/src
131080 4 drwxr-xr-x 2 root root 4096 May 6 16:14 /workspace/src/scripts
131092 4 drwxr-xr-x 3 root root 4096 May 6 16:14 /workspace/src/radicle-remote-helper
131508 4 drwxr-xr-x 5 root root 4096 May 6 16:14 /workspace/src/radicle-cli
131091 8 -rw-r--r-- 1 root root 7645 May 6 16:14 /workspace/src/HACKING.md
131254 4 drwxr-xr-x 3 root root 4096 May 6 16:14 /workspace/src/radicle-cli-test
131771 4 drwxr-xr-x 3 root root 4096 May 6 16:14 /workspace/src/radicle-node
131296 4 -rw-r--r-- 1 root root 1623 May 6 16:14 /workspace/src/build.rs
131259 4 drwxr-xr-x 3 root root 4096 May 6 16:14 /workspace/src/radicle-tools
131132 4 -rw-r--r-- 1 root root 77 May 6 16:14 /workspace/src/rust-toolchain.toml
131765 4 drwxr-xr-x 3 root root 4096 May 6 16:14 /workspace/src/radicle-dag
131761 4 -rw-r--r-- 1 root root 1203 May 6 16:14 /workspace/src/DCO
131764 4 -rw-r--r-- 1 root root 79 May 6 16:14 /workspace/src/ARCHITECTURE.md
131481 4 drwxr-xr-x 3 root root 4096 May 6 16:14 /workspace/src/radicle-term
131253 4 -rw-r--r-- 1 root root 61 May 6 16:14 /workspace/src/.env.seed
131304 4 drwxr-xr-x 2 root root 4096 May 6 16:14 /workspace/src/.config
131297 8 -rw-r--r-- 1 root root 7913 May 6 16:14 /workspace/src/flake.nix
131480 12 -rw-r--r-- 1 root root 9723 May 6 16:14 /workspace/src/LICENSE-APACHE
131117 4 drwxr-xr-x 2 root root 4096 May 6 16:14 /workspace/src/.cargo
131769 4 -rw-r--r-- 1 root root 1083 May 6 16:14 /workspace/src/.gitsigners
131307 8 -rw-r--r-- 1 root root 5432 May 6 16:14 /workspace/src/deny.toml
131763 12 -rw-r--r-- 1 root root 8326 May 6 16:14 /workspace/src/CONTRIBUTING.md
131102 4 -rw-r--r-- 1 root root 2163 May 6 16:14 /workspace/src/VERSIONING.md
131298 4 -rw-r--r-- 1 root root 86 May 6 16:14 /workspace/src/.gitignore
131438 4 drwxr-xr-x 3 root root 4096 May 6 16:14 /workspace/src/radicle-cob
131252 4 -rw-r--r-- 1 root root 10 May 6 16:14 /workspace/src/.envrc
131270 4 drwxr-xr-x 2 root root 4096 May 6 16:14 /workspace/src/build
131103 4 drwxr-xr-x 3 root root 4096 May 6 16:14 /workspace/src/radicle-crdt
131295 4 -rw-r--r-- 1 root root 3091 May 6 16:14 /workspace/src/README.md
131299 4 drwxr-xr-x 3 root root 4096 May 6 16:14 /workspace/src/radicle-systemd
131076 4 drwxr-xr-x 2 root root 4096 May 6 16:14 /workspace/src/.radicle
131306 4 -rw-r--r-- 1 root root 426 May 6 16:14 /workspace/src/radicle-node.1.adoc
131303 4 -rw-r--r-- 1 root root 725 May 6 16:14 /workspace/src/Cargo.toml
131282 4 drwxr-xr-x 3 root root 4096 May 6 16:14 /workspace/src/debian
131750 4 drwxr-xr-x 3 root root 4096 May 6 16:14 /workspace/src/radicle-ssh
131133 4 drwxr-xr-x 3 root root 4096 May 6 16:14 /workspace/src/radicle
131762 8 -rw-r--r-- 1 root root 5130 May 6 16:14 /workspace/src/flake.lock
131308 4 drwxr-xr-x 3 root root 4096 May 6 16:14 /workspace/src/radicle-signals
131120 4 drwxr-xr-x 3 root root 4096 May 6 16:14 /workspace/src/radicle-crypto
131724 4 drwxr-xr-x 2 root root 4096 May 6 16:14 /workspace/src/systemd
131726 4 drwxr-xr-x 3 root root 4096 May 6 16:14 /workspace/src/radicle-fetch
131079 4 -rw-r--r-- 1 root root 1079 May 6 16:14 /workspace/src/LICENSE-MIT
131119 8 -rw-r--r-- 1 root root 8044 May 6 16:14 /workspace/src/rad.1.adoc
131760 8 -rw-r--r-- 1 root root 6381 May 6 16:14 /workspace/src/rad-id.1.adoc
131101 4 -rw-r--r-- 1 root root 30 May 6 16:14 /workspace/src/.dockerignore
131269 4 -rw-r--r-- 1 root root 571 May 6 16:14 /workspace/src/git-remote-rad.1.adoc
131507 12 -rw-r--r-- 1 root root 10770 May 6 16:14 /workspace/src/rad-patch.1.adoc
131312 4 drwxr-xr-x 8 root root 4096 May 6 16:14 /workspace/src/.git
131770 88 -rw-r--r-- 1 root root 89098 May 6 16:14 /workspace/src/Cargo.lock
RUN: Action finished OK
RUN: Action CargoFmt
SPAWN: argv=["cargo", "fmt", "--check"]
cwd=/workspace/src (exists? true)
extra_env=[("CARGO_TARGET_DIR", "/workspace/cache"), ("CARGO_HOME", "/workspace/deps"), ("PATH", "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")]
RUN: Action finished OK
RUN: Action CargoClippy
SPAWN: argv=["cargo", "clippy", "--offline", "--locked", "--workspace", "--all-targets", "--no-deps", "--", "--deny", "warnings"]
cwd=/workspace/src (exists? true)
extra_env=[("CARGO_TARGET_DIR", "/workspace/cache"), ("CARGO_HOME", "/workspace/deps"), ("PATH", "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")]
Compiling git-ref-format-core v0.3.1
Checking radicle-ssh v0.9.0 (/workspace/src/radicle-ssh)
Checking radicle-dag v0.10.0 (/workspace/src/radicle-dag)
Checking fast-glob v0.3.3
Checking radicle-signals v0.11.0 (/workspace/src/radicle-signals)
Compiling radicle-cli v0.12.1 (/workspace/src/radicle-cli)
Compiling radicle-node v0.10.0 (/workspace/src/radicle-node)
Checking radicle-term v0.12.0 (/workspace/src/radicle-term)
Checking radicle-systemd v0.9.0 (/workspace/src/radicle-systemd)
Compiling radicle-remote-helper v0.10.0 (/workspace/src/radicle-remote-helper)
Compiling git-ref-format-macro v0.3.1
Checking git-ref-format v0.3.1
Checking radicle-git-ext v0.8.1
Checking radicle-crypto v0.11.0 (/workspace/src/radicle-crypto)
Checking radicle-surf v0.22.0
Checking radicle-cob v0.13.0 (/workspace/src/radicle-cob)
Checking radicle-crdt v0.1.0 (/workspace/src/radicle-crdt)
Checking radicle v0.14.0 (/workspace/src/radicle)
Checking radicle-cli-test v0.10.0 (/workspace/src/radicle-cli-test)
Checking radicle-fetch v0.10.0 (/workspace/src/radicle-fetch)
Checking radicle-tools v0.9.0 (/workspace/src/radicle-tools)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 21.80s
RUN: Action finished OK
RUN: Action CargoBuild
SPAWN: argv=["cargo", "build", "--offline", "--locked", "--workspace", "--all-targets"]
cwd=/workspace/src (exists? true)
extra_env=[("CARGO_TARGET_DIR", "/workspace/cache"), ("CARGO_HOME", "/workspace/deps"), ("PATH", "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")]
Compiling git-ref-format-core v0.3.1
Compiling radicle-ssh v0.9.0 (/workspace/src/radicle-ssh)
Compiling radicle-dag v0.10.0 (/workspace/src/radicle-dag)
Compiling fast-glob v0.3.3
Compiling radicle-signals v0.11.0 (/workspace/src/radicle-signals)
Compiling radicle-cli v0.12.1 (/workspace/src/radicle-cli)
Compiling radicle-node v0.10.0 (/workspace/src/radicle-node)
Compiling radicle-systemd v0.9.0 (/workspace/src/radicle-systemd)
Compiling radicle-term v0.12.0 (/workspace/src/radicle-term)
Compiling radicle-remote-helper v0.10.0 (/workspace/src/radicle-remote-helper)
Compiling git-ref-format-macro v0.3.1
Compiling git-ref-format v0.3.1
Compiling radicle-git-ext v0.8.1
Compiling radicle-crypto v0.11.0 (/workspace/src/radicle-crypto)
Compiling radicle-surf v0.22.0
Compiling radicle-cob v0.13.0 (/workspace/src/radicle-cob)
Compiling radicle-crdt v0.1.0 (/workspace/src/radicle-crdt)
Compiling radicle v0.14.0 (/workspace/src/radicle)
Compiling radicle-cli-test v0.10.0 (/workspace/src/radicle-cli-test)
Compiling radicle-fetch v0.10.0 (/workspace/src/radicle-fetch)
Compiling radicle-tools v0.9.0 (/workspace/src/radicle-tools)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 40.94s
RUN: Action finished OK
RUN: Action CargoTest
SPAWN: argv=["cargo", "test", "--offline", "--locked", "--workspace"]
cwd=/workspace/src (exists? true)
extra_env=[("CARGO_TARGET_DIR", "/workspace/cache"), ("CARGO_HOME", "/workspace/deps"), ("PATH", "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")]
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.40s
Running unittests src/lib.rs (/workspace/cache/debug/deps/radicle-03699755fa65dbd9)
running 179 tests
test canonical::formatter::test::ascii_control_characters ... ok
test canonical::formatter::test::securesystemslib_asserts ... ok
test cob::common::test::test_color ... ok
test canonical::formatter::test::ordered_nested_object ... ok
test cob::common::test::test_emojis ... ok
test cob::cache::tests::test_check_version ... ok
test cob::cache::migrations::_2::tests::test_patch_json_deserialization ... ok
test cob::cache::migrations::_2::tests::test_migration_2 ... ok
test cob::cache::tests::test_migrate_to ... ok
test cob::identity::test::prop_json_eq_str ... ok
test cob::identity::test::test_identity_updates ... ok
test cob::issue::cache::tests::test_counts ... ok
test cob::issue::cache::tests::test_get ... ok
test cob::issue::cache::tests::test_is_empty ... ok
test cob::issue::cache::tests::test_list ... ok
test cob::issue::cache::tests::test_list_by_status ... ok
test cob::issue::cache::tests::test_remove ... ok
test cob::identity::test::test_valid_identity ... ok
test cob::identity::test::test_identity_redact_revision ... ok
test cob::identity::test::test_identity_remove_delegate_concurrent ... ok
test cob::identity::test::test_identity_update_rejected ... ok
test cob::identity::test::test_identity_reject_concurrent ... ok
test cob::identity::test::test_identity_updates_concurrent ... ok
test cob::issue::test::test_embeds_edit ... ok
test cob::issue::test::test_invalid_actions ... ok
test cob::issue::test::test_embeds ... ok
test cob::issue::test::test_invalid_tx ... ok
test cob::identity::test::test_identity_updates_concurrent_outdated ... ok
test cob::issue::test::test_invalid_tx_reference ... ok
test cob::issue::test::test_issue_all ... ok
test cob::issue::test::test_issue_create_and_assign ... ok
test cob::issue::test::test_invalid_cob ... ok
test cob::issue::test::test_issue_comment_redact ... ok
test cob::issue::test::test_issue_create_and_get ... ok
test cob::issue::test::test_issue_comment ... ok
test cob::issue::test::test_issue_create_and_change_state ... ok
test cob::issue::test::test_issue_edit ... ok
test cob::issue::test::test_issue_edit_description ... ok
test cob::issue::test::test_issue_state_serde ... ok
test cob::issue::test::test_ordering ... ok
test cob::issue::test::test_concurrency ... ok
test cob::issue::test::test_issue_multilines ... ok
test cob::issue::test::test_issue_create_and_reassign ... ok
test cob::issue::test::test_issue_create_and_unassign ... ok
test cob::patch::cache::tests::test_is_empty ... ok
test cob::issue::test::test_issue_react ... ok
test cob::patch::cache::tests::test_get ... ok
test cob::patch::test::test_json ... ok
test cob::patch::test::test_json_serialization ... ok
test cob::issue::test::test_issue_label ... ok
test cob::patch::test::test_patch_create_and_get ... ok
test cob::patch::cache::tests::test_list ... ok
test cob::patch::cache::tests::test_remove ... ok
test cob::issue::test::test_issue_reply ... ok
test cob::patch::test::test_patch_discussion ... ok
test cob::patch::cache::tests::test_list_by_status ... ok
test cob::patch::test::test_patch_merge ... ok
test cob::patch::test::test_patch_review_comment ... ok
test cob::patch::test::test_patch_review_duplicate ... ok
test cob::patch::test::test_patch_review ... ok
test cob::patch::test::test_patch_redact ... ok
test cob::patch::test::test_reactions_json_serialization ... ok
test cob::patch::test::test_revision_edit_redact ... ok
test cob::patch::test::test_revision_reaction ... ok
test cob::patch::cache::tests::test_counts ... ok
test cob::patch::test::test_revision_review_merge_redacted ... ok
test cob::thread::tests::test_comment_edit_missing ... ok
test cob::thread::tests::test_comment_edit_redacted ... ok
test cob::thread::tests::test_comment_redact_missing ... ok
test cob::thread::tests::test_duplicate_comments ... ok
test cob::thread::tests::test_edit_comment ... ok
test cob::thread::tests::test_redact_comment ... ok
test cob::patch::test::test_patch_review_edit ... ok
test cob::thread::tests::test_timeline ... ok
test git::canonical::rules::tests::test_deserialization ... ok
test git::canonical::rules::tests::test_deserialize_extensions ... ok
test git::canonical::rules::tests::test_order ... ok
test git::canonical::rules::tests::test_roundtrip ... ok
test cob::patch::test::test_patch_review_remove_summary ... ok
test git::canonical::rules::tests::test_rule_validate_success ... ok
test git::canonical::rules::tests::test_special_branches ... ok
test cob::patch::test::test_patch_review_revision_redact ... ok
test cob::patch::test::test_patch_review_edit_comment ... ok
test git::canonical::rules::tests::test_canonical ... FAILED
test git::test::test_version_from_str ... ok
test git::test::test_version_ord ... ok
test identity::did::test::test_did_encode_decode ... ok
test identity::did::test::test_did_vectors ... ok
test git::canonical::tests::test_quorum_merges ... ok
test identity::doc::id::test::prop_from_str ... ok
test identity::doc::test::test_canonical_doc ... ok
test git::canonical::tests::test_quorum ... ok
test identity::doc::test::test_duplicate_dids ... ok
test git::canonical::rules::tests::test_rule_validate_failures ... ok
test identity::doc::test::test_migrate_v1 ... ok
test identity::doc::test::test_not_found ... ok
test identity::doc::test::test_version_out_of_range ... ok
test identity::doc::test::test_visibility_json ... ok
test identity::doc::v1::test::test_parse_version ... ok
test identity::project::test::test_project_name ... ok
test cob::patch::test::test_patch_update ... ok
test identity::doc::test::test_canonical_example ... ok
test node::address::store::test::test_alias ... ok
test node::address::store::test::test_disconnected ... ok
test node::address::store::test::test_disconnected_ban ... ok
test node::address::store::test::test_get_none ... ok
test node::address::store::test::test_insert_and_get ... ok
test node::address::store::test::test_insert_and_remove ... ok
test node::address::store::test::test_entries ... ok
test node::address::store::test::test_insert_and_update ... ok
test node::address::store::test::test_insert_duplicate ... ok
test node::address::store::test::test_node_aliases ... ok
test node::address::store::test::test_remove_nothing ... ok
test node::db::test::test_version ... ok
test node::features::test::test_operations ... ok
test node::notifications::store::test::test_branch_notifications ... ok
test node::notifications::store::test::test_clear ... ok
test node::notifications::store::test::test_cob_notifications ... ok
test node::notifications::store::test::test_counts_by_repo ... ok
test node::notifications::store::test::test_duplicate_notifications ... ok
test node::notifications::store::test::test_notification_status ... ok
test node::policy::store::test::test_follow_and_unfollow_node ... ok
test node::policy::store::test::test_node_policies ... ok
test node::policy::store::test::test_node_aliases ... ok
test node::policy::store::test::test_node_policy ... ok
test node::policy::store::test::test_repo_policies ... ok
test node::policy::store::test::test_repo_policy ... ok
test node::policy::store::test::test_seed_and_unseed_repo ... ok
test node::policy::store::test::test_update_alias ... ok
test node::policy::store::test::test_update_scope ... ok
test node::refs::store::test::test_count ... ok
test node::refs::store::test::test_set_and_delete ... ok
test node::refs::store::test::test_set_and_get ... ok
test node::address::store::test::test_empty ... ok
test node::routing::test::test_entries ... ok
test identity::doc::test::test_max_delegates ... ok
test node::routing::test::test_count ... ok
test node::routing::test::test_insert_duplicate ... ok
test node::routing::test::test_insert_and_remove ... ok
test node::routing::test::test_insert_and_get ... ok
test node::routing::test::test_insert_and_get_resources ... ok
test node::routing::test::test_len ... ok
test node::routing::test::test_remove_many ... ok
test node::routing::test::test_remove_redundant ... ok
test node::test::test_alias ... ok
test node::test::test_command_result ... ok
test node::test::test_user_agent ... ok
test node::routing::test::test_update_existing_multi ... ok
test node::timestamp::tests::test_timestamp_max ... ok
test profile::test::canonicalize_home ... ok
test profile::test::test_config ... ok
test node::routing::test::test_insert_existing_updated_time ... ok
test node::routing::test::test_prune ... ok
test serde_ext::test::test_localtime ... ok
test serde_ext::test::test_localtime_ext ... ok
test cob::patch::cache::tests::test_find_by_revision ... ok
test rad::tests::test_checkout ... ok
test rad::tests::test_init ... ok
test rad::tests::test_fork ... ok
test storage::git::transport::local::url::test::test_url_parse ... ok
test storage::git::transport::local::url::test::test_url_to_string ... ok
test storage::git::transport::remote::url::test::test_url_parse ... ok
test storage::git::tests::test_references_of ... ok
test storage::refs::tests::prop_canonical_roundtrip ... ok
test storage::tests::test_storage ... ok
test test::assert::test::assert_with_message ... ok
test test::assert::test::test_assert_no_move ... ok
test test::assert::test::test_assert_panic_0 - should panic ... ok
test test::assert::test::test_assert_panic_1 - should panic ... ok
test test::assert::test::test_assert_panic_2 - should panic ... ok
test test::assert::test::test_assert_succeed ... ok
test test::assert::test::test_panic_message ... ok
test version::test::test_version ... ok
test storage::git::tests::test_sign_refs ... ok
test git::canonical::tests::test_quorum_properties ... ok
test storage::git::tests::test_remote_refs ... ok
test storage::refs::tests::test_rid_verification ... ok
test cob::thread::tests::prop_ordering ... ok
test identity::doc::test::prop_encode_decode ... ok
failures:
---- git::canonical::rules::tests::test_canonical stdout ----
thread 'git::canonical::rules::tests::test_canonical' panicked at radicle/src/git/canonical/rules.rs:740:39:
called `Result::unwrap()` on an `Err` value: Error { code: -3, klass: 7, message: "config value 'user.name' was not found" }
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
failures:
git::canonical::rules::tests::test_canonical
test result: FAILED. 178 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.93s
error: test failed, to rerun pass `-p radicle --lib`
ERROR: Action failed: command failed: ["cargo", "test", "--offline", "--locked", "--workspace"]
ERROR: command failed: ["cargo", "test", "--offline", "--locked", "--workspace"]
EXIT CODE: 1
[2025-05-06T16:20:12Z INFO ambient] ambient ends successfully