CI run for heartwood

Radicle repository id rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5

Triggered by

{
  "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": "49fcea75c04936fe3cdaf7e81c7577833fa66bfc",
    "commits": [
      "49fcea75c04936fe3cdaf7e81c7577833fa66bfc",
      "64b760ad057f340f6e4eb2a333300bde7f6a7300",
      "ee2981ba60e0cb054734c9a22b98713862da6700",
      "30024882bc649e6503b825c054e09fd4cee6744c",
      "5bb8800f7de38d92c6bb97a22e328cafb750a0e3",
      "d9376bf6bc8cb127003c4d2fd3f85b61e9da3b7e"
    ],
    "target": "59a1021410a28b635d86cde34da75766204f2f7e",
    "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
      },
      {
        "id": "9f779028704b4c022cbe25c0e4a9bb46dc8463ba",
        "author": {
          "id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
          "alias": "fintohaps"
        },
        "description": "Changes:\n- Addressed erik's feedback",
        "base": "f30760d6bb86d2978a5ed4df8ee45b9aa97778b4",
        "oid": "49fcea75c04936fe3cdaf7e81c7577833fa66bfc",
        "timestamp": 1746617713
      },
      {
        "id": "86ebfcaaf986edba5e77ede1be4d3c4ce33bd27c",
        "author": {
          "id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
          "alias": "fintohaps"
        },
        "description": "Changes:\n- Fixed `cargo doc` errors\n- Fixed cli test errors",
        "base": "f30760d6bb86d2978a5ed4df8ee45b9aa97778b4",
        "oid": "2df7cd9af4ffd1e929a9c3e33c682c7e59ee3950",
        "timestamp": 1746627996
      }
    ]
  }
}

Run log

[2025-05-07T14:43:45Z INFO  ambient] ambient starts
[=3h[=3hBdsDxe: 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)
Welcome to GRUB!


INFO: 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  7 14:36 /workspace
   131074      4 drwxr-xr-x   2 root     root         4096 May  7 14:36 /workspace/artifacts
   131827      4 drwxr-xr-x   3 root     root         4096 May  7 14:35 /workspace/deps
   131830      4 drwxr-xr-x   5 root     root         4096 Apr 11 13:20 /workspace/deps/registry
   131828    172 -rw-r--r--   1 root     root       176128 May  7 14:35 /workspace/deps/.global-cache
   131829      0 -rw-r--r--   1 root     root            0 Apr 11 13:20 /workspace/deps/.package-cache
   169644      4 drwxr-xr-x   6 root     root         4096 Apr 22 15:00 /workspace/cache
   169646      4 drwxr-xr-x   7 root     root         4096 May  7 14:19 /workspace/cache/debug
  1197554      4 drwxr-xr-x   7 root     root         4096 May  7 14:23 /workspace/cache/release
   169645      4 drwxr-xr-x   2 root     root         4096 Apr 22 14:53 /workspace/cache/tmp
  1312387      4 drwxr-xr-x  30 root     root         4096 May  7 14:21 /workspace/cache/doc
   170404      4 -rw-r--r--   1 root     root          218 Apr 22 15:00 /workspace/cache/.rustdoc_fingerprint.json
   170405      4 -rw-r--r--   1 root     root         1033 May  7 14:19 /workspace/cache/.rustc_info.json
   131075      4 drwxr-xr-x  25 root     root         4096 May  7 14:35 /workspace/src
   131080      4 drwxr-xr-x   2 root     root         4096 May  7 14:35 /workspace/src/scripts
   131092      4 drwxr-xr-x   3 root     root         4096 May  7 14:35 /workspace/src/radicle-remote-helper
   131516      4 drwxr-xr-x   5 root     root         4096 May  7 14:35 /workspace/src/radicle-cli
   131091      8 -rw-r--r--   1 root     root         7645 May  7 14:35 /workspace/src/HACKING.md
   131254      4 drwxr-xr-x   3 root     root         4096 May  7 14:35 /workspace/src/radicle-cli-test
   131779      4 drwxr-xr-x   3 root     root         4096 May  7 14:35 /workspace/src/radicle-node
   131296      4 -rw-r--r--   1 root     root         1623 May  7 14:35 /workspace/src/build.rs
   131259      4 drwxr-xr-x   3 root     root         4096 May  7 14:35 /workspace/src/radicle-tools
   131132      4 -rw-r--r--   1 root     root           77 May  7 14:35 /workspace/src/rust-toolchain.toml
   131773      4 drwxr-xr-x   3 root     root         4096 May  7 14:35 /workspace/src/radicle-dag
   131769      4 -rw-r--r--   1 root     root         1203 May  7 14:35 /workspace/src/DCO
   131772      4 -rw-r--r--   1 root     root           79 May  7 14:35 /workspace/src/ARCHITECTURE.md
   131489      4 drwxr-xr-x   3 root     root         4096 May  7 14:35 /workspace/src/radicle-term
   131253      4 -rw-r--r--   1 root     root           61 May  7 14:35 /workspace/src/.env.seed
   131304      4 drwxr-xr-x   2 root     root         4096 May  7 14:35 /workspace/src/.config
   131297      8 -rw-r--r--   1 root     root         7913 May  7 14:35 /workspace/src/flake.nix
   131488     12 -rw-r--r--   1 root     root         9723 May  7 14:35 /workspace/src/LICENSE-APACHE
   131117      4 drwxr-xr-x   2 root     root         4096 May  7 14:35 /workspace/src/.cargo
   131777      4 -rw-r--r--   1 root     root         1083 May  7 14:35 /workspace/src/.gitsigners
   131307      8 -rw-r--r--   1 root     root         5432 May  7 14:35 /workspace/src/deny.toml
   131771     12 -rw-r--r--   1 root     root         8326 May  7 14:35 /workspace/src/CONTRIBUTING.md
   131102      4 -rw-r--r--   1 root     root         2163 May  7 14:35 /workspace/src/VERSIONING.md
   131298      4 -rw-r--r--   1 root     root           86 May  7 14:35 /workspace/src/.gitignore
   131446      4 drwxr-xr-x   3 root     root         4096 May  7 14:35 /workspace/src/radicle-cob
   131252      4 -rw-r--r--   1 root     root           10 May  7 14:35 /workspace/src/.envrc
   131270      4 drwxr-xr-x   2 root     root         4096 May  7 14:35 /workspace/src/build
   131103      4 drwxr-xr-x   3 root     root         4096 May  7 14:35 /workspace/src/radicle-crdt
   131295      4 -rw-r--r--   1 root     root         3091 May  7 14:35 /workspace/src/README.md
   131299      4 drwxr-xr-x   3 root     root         4096 May  7 14:35 /workspace/src/radicle-systemd
   131076      4 drwxr-xr-x   2 root     root         4096 May  7 14:35 /workspace/src/.radicle
   131306      4 -rw-r--r--   1 root     root          426 May  7 14:35 /workspace/src/radicle-node.1.adoc
   131303      4 -rw-r--r--   1 root     root          725 May  7 14:35 /workspace/src/Cargo.toml
   131282      4 drwxr-xr-x   3 root     root         4096 May  7 14:35 /workspace/src/debian
   131758      4 drwxr-xr-x   3 root     root         4096 May  7 14:35 /workspace/src/radicle-ssh
   131133      4 drwxr-xr-x   3 root     root         4096 May  7 14:35 /workspace/src/radicle
   131770      8 -rw-r--r--   1 root     root         5130 May  7 14:35 /workspace/src/flake.lock
   131308      4 drwxr-xr-x   3 root     root         4096 May  7 14:35 /workspace/src/radicle-signals
   131120      4 drwxr-xr-x   3 root     root         4096 May  7 14:35 /workspace/src/radicle-crypto
   131732      4 drwxr-xr-x   2 root     root         4096 May  7 14:35 /workspace/src/systemd
   131734      4 drwxr-xr-x   3 root     root         4096 May  7 14:35 /workspace/src/radicle-fetch
   131079      4 -rw-r--r--   1 root     root         1079 May  7 14:35 /workspace/src/LICENSE-MIT
   131119      8 -rw-r--r--   1 root     root         8044 May  7 14:35 /workspace/src/rad.1.adoc
   131768      8 -rw-r--r--   1 root     root         6381 May  7 14:35 /workspace/src/rad-id.1.adoc
   131101      4 -rw-r--r--   1 root     root           30 May  7 14:35 /workspace/src/.dockerignore
   131269      4 -rw-r--r--   1 root     root          571 May  7 14:35 /workspace/src/git-remote-rad.1.adoc
   131515     12 -rw-r--r--   1 root     root        10770 May  7 14:35 /workspace/src/rad-patch.1.adoc
   131312      4 drwxr-xr-x   8 root     root         4096 May  7 14:35 /workspace/src/.git
   131778     88 -rw-r--r--   1 root     root        89098 May  7 14:35 /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 23.69s
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-remote-helper v0.10.0 (/workspace/src/radicle-remote-helper)
   Compiling radicle-term v0.12.0 (/workspace/src/radicle-term)
   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 51.47s
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.18s
     Running unittests src/lib.rs (/workspace/cache/debug/deps/radicle-03699755fa65dbd9)

running 179 tests
test cob::cache::migrations::_2::tests::test_patch_json_deserialization ... ok
test cob::cache::tests::test_check_version ... ok
test canonical::formatter::test::ascii_control_characters ... ok
test canonical::formatter::test::securesystemslib_asserts ... ok
test canonical::formatter::test::ordered_nested_object ... ok
test cob::common::test::test_color ... ok
test cob::common::test::test_emojis ... 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::identity::test::test_identity_update_rejected ... 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_identity_redact_revision ... ok
test cob::identity::test::test_valid_identity ... ok
test cob::identity::test::test_identity_updates_concurrent ... ok
test cob::issue::test::test_embeds ... ok
test cob::identity::test::test_identity_remove_delegate_concurrent ... ok
test cob::issue::test::test_embeds_edit ... ok
test cob::identity::test::test_identity_reject_concurrent ... ok
test cob::issue::test::test_invalid_actions ... ok
test cob::issue::test::test_invalid_tx ... ok
test cob::issue::test::test_invalid_tx_reference ... ok
test cob::issue::test::test_invalid_cob ... ok
test cob::issue::test::test_issue_all ... ok
test cob::issue::test::test_issue_comment ... ok
test cob::identity::test::test_identity_updates_concurrent_outdated ... ok
test cob::issue::test::test_issue_create_and_assign ... ok
test cob::issue::test::test_issue_create_and_get ... ok
test cob::issue::test::test_issue_comment_redact ... ok
test cob::issue::test::test_issue_create_and_change_state ... ok
test cob::issue::test::test_issue_create_and_unassign ... ok
test cob::issue::test::test_issue_edit ... ok
test cob::issue::test::test_issue_state_serde ... ok
test cob::issue::test::test_ordering ... ok
test cob::issue::test::test_issue_multilines ... ok
test cob::issue::test::test_issue_edit_description ... ok
test cob::issue::test::test_issue_create_and_reassign ... ok
test cob::patch::cache::tests::test_is_empty ... ok
test cob::issue::test::test_issue_label ... ok
test cob::issue::test::test_issue_react ... ok
test cob::issue::test::test_concurrency ... ok
test cob::patch::test::test_json ... ok
test cob::patch::test::test_json_serialization ... ok
test cob::issue::test::test_issue_reply ... ok
test cob::patch::test::test_patch_create_and_get ... ok
test cob::patch::cache::tests::test_list_by_status ... ok
test cob::patch::cache::tests::test_get ... ok
test cob::patch::cache::tests::test_list ... ok
test cob::patch::test::test_patch_merge ... ok
test cob::patch::test::test_patch_discussion ... ok
test cob::patch::test::test_patch_review_comment ... ok
test cob::patch::test::test_patch_redact ... ok
test cob::patch::test::test_patch_review ... ok
test cob::patch::test::test_patch_review_duplicate ... ok
test cob::patch::test::test_patch_review_edit ... 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_find_by_revision ... ok
test cob::patch::test::test_revision_review_merge_redacted ... ok
test cob::patch::cache::tests::test_remove ... 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_edit_comment ... ok
test cob::thread::tests::test_duplicate_comments ... ok
test cob::thread::tests::test_redact_comment ... 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::cache::tests::test_counts ... ok
test git::canonical::rules::tests::test_rule_validate_success ... ok
test git::canonical::rules::tests::test_special_branches ... ok
test git::canonical::rules::tests::test_rule_validate_failures ... ok
test cob::thread::tests::prop_ordering ... ok
test git::canonical::tests::test_quorum_merges ... ok
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 identity::doc::id::test::prop_from_str ... ok
test cob::patch::test::test_patch_review_remove_summary ... ok
test cob::patch::test::test_patch_review_revision_redact ... ok
test cob::patch::test::test_patch_review_edit_comment ... ok
test identity::doc::test::test_duplicate_dids ... ok
test git::canonical::rules::tests::test_canonical ... FAILED
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 identity::doc::test::test_canonical_doc ... ok
test node::address::store::test::test_alias ... ok
test node::address::store::test::test_disconnected ... ok
test identity::doc::test::test_canonical_example ... 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 git::canonical::tests::test_quorum ... ok
test node::address::store::test::test_entries ... ok
test node::address::store::test::test_insert_and_remove ... ok
test node::address::store::test::test_insert_duplicate ... ok
test node::address::store::test::test_insert_and_update ... ok
test node::db::test::test_version ... ok
test node::features::test::test_operations ... ok
test node::address::store::test::test_remove_nothing ... ok
test node::notifications::store::test::test_branch_notifications ... ok
test node::address::store::test::test_node_aliases ... ok
test node::notifications::store::test::test_clear ... ok
test node::notifications::store::test::test_duplicate_notifications ... ok
test node::notifications::store::test::test_counts_by_repo ... 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_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_node_aliases ... ok
test node::policy::store::test::test_seed_and_unseed_repo ... ok
test node::policy::store::test::test_update_scope ... ok
test node::policy::store::test::test_update_alias ... ok
test node::refs::store::test::test_set_and_delete ... ok
test node::refs::store::test::test_count ... ok
test node::refs::store::test::test_set_and_get ... ok
test node::notifications::store::test::test_cob_notifications ... ok
test node::routing::test::test_count ... 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_entries ... ok
test node::routing::test::test_insert_existing_updated_time ... ok
test node::routing::test::test_insert_duplicate ... ok
test node::routing::test::test_len ... ok
test node::routing::test::test_insert_and_remove ... 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::routing::test::test_update_existing_multi ... ok
test node::test::test_command_result ... ok
test node::test::test_user_agent ... 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_prune ... ok
test identity::doc::test::test_max_delegates ... ok
test serde_ext::test::test_localtime ... ok
test serde_ext::test::test_localtime_ext ... ok
test rad::tests::test_checkout ... ok
test rad::tests::test_fork ... ok
test rad::tests::test_init ... 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 storage::git::tests::test_remote_refs ... ok
test cob::patch::test::test_patch_update ... ok
test git::canonical::tests::test_quorum_properties ... ok
test node::address::store::test::test_empty ... ok
test storage::refs::tests::test_rid_verification ... 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 5.36s

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-07T14:43:45Z INFO  ambient] ambient ends successfully