CCI report: e296914d-4211-4e9f-bd42-f98bb2d89437

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": "cf9aec77b359e60653c7712fca72cf392a926cd7",
    "commits": [
      "cf9aec77b359e60653c7712fca72cf392a926cd7",
      "5f4e0456f1bd6e41c1fabce948286f32ce77172d"
    ],
    "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": "ed219c83a9dc8c22d558dd42c37b2f7a61f9824d",
        "author": {
          "id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
          "alias": "lorenz"
        },
        "description": "Undo accidental moves and not using `encode_vec`.",
        "base": "19a262d3d67ea92a37ceaf18e79a783d8e65ccdd",
        "oid": "cf9aec77b359e60653c7712fca72cf392a926cd7",
        "timestamp": 1755966751
      }
    ]
  }
}

Send response

{
  "response": "triggered",
  "run_id": {
    "id": "e296914d-4211-4e9f-bd42-f98bb2d89437"
  },
  "info_url": "https://cci.rad.levitte.org//e296914d-4211-4e9f-bd42-f98bb2d89437.html"
}

Checkout the source (in /opt/radcis/ci.rad.levitte.org/cci/state/e296914d-4211-4e9f-bd42-f98bb2d89437/w)

Started at: 2025-08-23 18:32:35.108088+02:00

Commands:

Read the repo configuration (.radicle/native.yaml in /opt/radcis/ci.rad.levitte.org/cci/state/e296914d-4211-4e9f-bd42-f98bb2d89437/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"
}