CCI report: 9b24292f-8ef6-47be-9207-da33fd6c0d90

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": "2360161e798728092f34e9225066556902a2254b",
    "author": {
      "id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
      "alias": "lorenz"
    },
    "title": "protocol: Revisit encoding and decoding",
    "state": {
      "status": "open",
      "conflicts": []
    },
    "before": "19a262d3d67ea92a37ceaf18e79a783d8e65ccdd",
    "after": "7b4d071b6fc4947dbcea532800a80cc1dfe2f54b",
    "commits": [
      "7b4d071b6fc4947dbcea532800a80cc1dfe2f54b",
      "f6d067eb65ed9a1270d7ad6a2a6ef32a5b540da7",
      "7e142b65e22cdbbacae3f515f7cfdc9e76691a03"
    ],
    "target": "19a262d3d67ea92a37ceaf18e79a783d8e65ccdd",
    "labels": [],
    "assignees": [],
    "revisions": [
      {
        "id": "2360161e798728092f34e9225066556902a2254b",
        "author": {
          "id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
          "alias": "lorenz"
        },
        "description": "## Encoding\n\nIn 3c5668edd22ae4b9a085220d6be552f944ccb038 I mistakenly moved the check\nthe length of an encoded `wire::Message` from its `impl wire::Encode` to\nthe `fn serialize`, so that it would not apply only to messages (as\noriginally intended), but to *any* argument of `serialize`.\n\nThis is not a problem for gossip messages, but catastrophic for Git\nstreams, which tend to send a lot of data.\n\nThe fix is simple: Move the check back into `impl Encode for Message`.\n\nWhat made this harder to spot for me was the multitude of concepts and\nterms involved in encoding: What's *serializing* vs. *encoding*? Why is\nthere this odd `Frame::to_bytes`?\n\nSo I decided to clean up a bit. I removed `fn serialize` so that the\nlogic stays close to the data, and instead of it provide\n`fn encode_vec` in `trait Encode` so that we don't add up with\none-offs like `Frame::to_bytes` again. Also we make use of `encode_vec`\nin the tests.\n\nThere is `test_encode_git_large` will panic if we ever regress.\n\n## Decoding\n\nRemove `fn deserialize` and instead provide a trait `fn decode_exact`\nfor testing.\n\nRefactor errors, so that we can now cleanly distinguish between\n`Error::UnexpectedEnd` which means that decoding might work given\nmore data, and `Error::Invalid`, which means that no amount of\nadditional data will decode.\n\nWhile at it, cleanup the variants of `Error::Invalid`, and provide `ControlType`.",
        "base": "19a262d3d67ea92a37ceaf18e79a783d8e65ccdd",
        "oid": "4e00d61747494d037b4dc714313759d9de9d7dd9",
        "timestamp": 1755965877
      },
      {
        "id": "2eea26dbf0e1bf01a1da0373d4e44610a84ebe24",
        "author": {
          "id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
          "alias": "lorenz"
        },
        "description": "Pull out the actual fix into a separate commit for clarity.",
        "base": "19a262d3d67ea92a37ceaf18e79a783d8e65ccdd",
        "oid": "7b4d071b6fc4947dbcea532800a80cc1dfe2f54b",
        "timestamp": 1755973092
      }
    ]
  }
}

Send response

{
  "response": "triggered",
  "run_id": {
    "id": "9b24292f-8ef6-47be-9207-da33fd6c0d90"
  },
  "info_url": "https://cci.rad.levitte.org//9b24292f-8ef6-47be-9207-da33fd6c0d90.html"
}

Checkout the source (in /opt/radcis/ci.rad.levitte.org/cci/state/9b24292f-8ef6-47be-9207-da33fd6c0d90/w)

Started at: 2025-08-23 20:24:49.742908+02:00

Commands:

Read the repo configuration (.radicle/native.yaml in /opt/radcis/ci.rad.levitte.org/cci/state/9b24292f-8ef6-47be-9207-da33fd6c0d90/w)

shell: 'cargo --version

  rustc --version


  cargo fmt --check

  cargo clippy --all-targets --workspace -- --deny warnings

  cargo build --all-targets --workspace

  cargo doc --workspace --no-deps

  cargo test --workspace --no-fail-fast

  '

Run the script

Commands:

Send result

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