CCI report: cc897737-ec62-4812-a269-4170f2bc77e9

Request message

{
  "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": "e485eac65fae2de4ae2ad6a96cae1c78eb2f35c9",
    "author": {
      "id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
      "alias": "fintohaps"
    },
    "title": "node: Skip unreadable address rows in `entries()`",
    "state": {
      "status": "open",
      "conflicts": []
    },
    "before": "b482845e712d54fdee00b0548c828e6694a3f359",
    "after": "d3419fac3fb81ead342d1305081409e42b65dc72",
    "commits": [
      "d3419fac3fb81ead342d1305081409e42b65dc72"
    ],
    "target": "b482845e712d54fdee00b0548c828e6694a3f359",
    "labels": [],
    "assignees": [],
    "revisions": [
      {
        "id": "e485eac65fae2de4ae2ad6a96cae1c78eb2f35c9",
        "author": {
          "id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
          "alias": "fintohaps"
        },
        "description": "An address book entry, `[]:8776`, was breaking the entire `available_peers()` lookup on a radicle garden node. The row had `type=\u2018ipv6'` and `value='[]:8776\u2019` and on every read, `Address::from_str` stripped the brackets, called `Ipv6Addr::from_str(\u201c\")`, and bubbled \"invalid IPv6 address syntax\" all the way up through `try_read?`. \n\nBecause entries() aborted on the first failed row, the service got an empty peer list and silently degraded peer discovery.\n\nIt seems that this may have originated from a pre-`df8e4e6c` parser that admitted `[]:8776` as `HostName::Dns(\"[]\")`. Migration 8 retyped any `[..]:N` dns row to `ipv6` without validating the inner part.\n\nThis patch:\n\n- Decode each row independently so one corrupt entry no longer aborts\n  the whole address-book iterator\n- Log a warn with the raw `value` and continue past parse failures\n- Add a regression test that mimics the post-migration-8 state where a\n  legacy `[]:8776` row lands as `type='ipv6\u2019`\n\nWe may want to follow up with another migration to clean any invalid ipv6 entries in the addresses table.",
        "base": "b482845e712d54fdee00b0548c828e6694a3f359",
        "oid": "b8b94db543e832a0cebd0e9858605ac134a85789",
        "timestamp": 1777468534
      },
      {
        "id": "12ae95a7ec1a83055b1874d7fd6d7590ef549abb",
        "author": {
          "id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
          "alias": "fintohaps"
        },
        "description": "Refactor row decoder into a TryFrom trait",
        "base": "b482845e712d54fdee00b0548c828e6694a3f359",
        "oid": "5467fdefce2327513623583f6885298b0b0b0c67",
        "timestamp": 1777476431
      },
      {
        "id": "1340c6b810617fa8b1614b3deb43d384656649e5",
        "author": {
          "id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
          "alias": "fintohaps"
        },
        "description": "Changes:\n- Rebase\n- Edit use of contraction in comment\n- Add CHANGELOG entry",
        "base": "b482845e712d54fdee00b0548c828e6694a3f359",
        "oid": "d3419fac3fb81ead342d1305081409e42b65dc72",
        "timestamp": 1777566178
      }
    ]
  }
}

Send response

{
  "response": "triggered",
  "run_id": {
    "id": "cc897737-ec62-4812-a269-4170f2bc77e9"
  },
  "info_url": "https://cci.rad.levitte.org//cc897737-ec62-4812-a269-4170f2bc77e9.html"
}

Checkout the source (in /opt/radcis/ci.rad.levitte.org/cci/state/cc897737-ec62-4812-a269-4170f2bc77e9/w)

Started at: 2026-04-30 18:23:07.106894+02:00

Commands:

Read the repo configuration (.radicle/native.yaml in /opt/radcis/ci.rad.levitte.org/cci/state/cc897737-ec62-4812-a269-4170f2bc77e9/w)

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

  '

Run the script

Commands:

Send result

{
  "response": "finished",
  "result": "success"
}