apiVersion: jenkins.io/v1 kind: PipelineActivity metadata: annotations: lighthouse.jenkins-x.io/cloneURI: https://github.com/greencapitaltrade/deadpool.git lighthouse.jenkins-x.io/job: release pipeline.jenkins-x.io/traceID: 26969c90f901e6d3bc61c9292532c2e0 creationTimestamp: "2026-05-29T12:35:16Z" generation: 6 labels: branch: main build: "43" context: release created-by-lighthouse: "true" event-GUID: d62b6996-5b5a-11f1-8566-78e0cc88d2c2 lighthouse.jenkins-x.io/baseSHA: eb6e82ec8e13cae04a0862d38bb61ee12b75c44d lighthouse.jenkins-x.io/branch: main lighthouse.jenkins-x.io/buildNum: "1780058116692" lighthouse.jenkins-x.io/context: release lighthouse.jenkins-x.io/id: pitaltrade-deadpool-main-release-hhpxw lighthouse.jenkins-x.io/job: release lighthouse.jenkins-x.io/lastCommitSHA: eb6e82ec8e13cae04a0862d38bb61ee12b75c44d lighthouse.jenkins-x.io/refs.org: greencapitaltrade lighthouse.jenkins-x.io/refs.repo: deadpool lighthouse.jenkins-x.io/type: postsubmit owner: greencapitaltrade podName: pitaltrade-deadpool-main-release-x92nc-from-build-pack-pod provider: github repository: deadpool tekton.dev/pipeline: pitaltrade-deadpool-main-release-x92nc managedFields: - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:branch: {} f:context: {} f:owner: {} f:provider: {} f:repository: {} f:spec: f:lastCommitMessage: {} f:lastCommitSHA: {} f:releaseNotesURL: {} f:version: {} manager: jx-changelog-0.10.18 operation: Update time: "2026-05-29T12:47:28Z" - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:lighthouse.jenkins-x.io/cloneURI: {} f:lighthouse.jenkins-x.io/job: {} f:pipeline.jenkins-x.io/traceID: {} f:labels: .: {} f:build: {} f:created-by-lighthouse: {} f:event-GUID: {} f:lighthouse.jenkins-x.io/baseSHA: {} f:lighthouse.jenkins-x.io/branch: {} f:lighthouse.jenkins-x.io/buildNum: {} f:lighthouse.jenkins-x.io/context: {} f:lighthouse.jenkins-x.io/id: {} f:lighthouse.jenkins-x.io/job: {} f:lighthouse.jenkins-x.io/lastCommitSHA: {} f:lighthouse.jenkins-x.io/refs.org: {} f:lighthouse.jenkins-x.io/refs.repo: {} f:lighthouse.jenkins-x.io/type: {} f:podName: {} f:tekton.dev/pipeline: {} f:spec: .: {} f:baseSHA: {} f:batchPipelineActivity: {} f:build: {} f:buildLogsUrl: {} f:completedTimestamp: {} f:context: {} f:gitBranch: {} f:gitOwner: {} f:gitRepository: {} f:gitUrl: {} f:message: {} f:pipeline: {} f:startedTimestamp: {} f:status: {} f:steps: {} manager: jx-build-controller operation: Update time: "2026-05-29T12:47:52Z" name: greencapitaltrade-deadpool-main-43 namespace: jx resourceVersion: "60196814" uid: 93d355ff-fefa-4f2d-aa28-5d71e126d704 spec: baseSHA: eb6e82ec8e13cae04a0862d38bb61ee12b75c44d batchPipelineActivity: {} build: "43" buildLogsUrl: s3://logs-gct-prod-20260425045301534100000007/jenkins-x/logs/greencapitaltrade/deadpool/main/43.log completedTimestamp: "2026-05-29T12:47:49Z" context: release gitBranch: main gitOwner: greencapitaltrade gitRepository: deadpool gitUrl: https://github.com/greencapitaltrade/deadpool.git lastCommitMessage: | feat(iot-common): Terra v1 bit codec — Rust kernel First implementation step toward the Terra v1 telemetry redesign documented in wasp#13 (TERRA_MQTT_PROTOCOL.md §3.2). Adds the hardware-agnostic bit-packing kernel that the v1 telemetry decoder (parse_telemetry_v1, separate PR) will sit on top of. What's in this PR: - services/iot-common/src/protocols/terra_v1/mod.rs — module shell; re-exports BitReader, BitWriter, BitCodecError. - services/iot-common/src/protocols/terra_v1/bit_codec.rs — MSB-first BitWriter + BitReader, Elias gamma encode/decode, ZigZag, all in ~280 lines of safe Rust (no unsafe, no external deps beyond std). - 16 unit tests covering every encoding case in Wasp/TERRA_TEST_VECTORS.md byte-for-byte (matching wasp#TBD). Test results: `cargo test -p iot-common --lib protocols::terra_v1` → 16 passed, 0 failed. Design choices worth flagging: - No `thiserror` dependency — iot-common's Cargo.toml deliberately uses std::error for error types; BitCodecError implements Display + std::error::Error manually. - BitWriter is owned-Vec; BitReader is borrowed-slice. The server hot-path will borrow incoming MQTT payloads directly. - `read_bit_len`/`read_bits` use a u64 accumulator so any individual field up to 64 bits wide can be read in one call. Terra v1's widest fixed-width field is 32 bits (cid), so 64 is comfortable headroom. - GammaTooLong errors after 33+ leading zeros — no Terra v1 field encodes anything that wide, but the codec doesn't silently truncate. Authoritative encoding cases live in Wasp/TERRA_TEST_VECTORS.md (canonical source). The Rust test cases mirror that file. The matching C kernel lands as wasp PR #TBD with the same vectors and a host-side test runner. Cross-implementation agreement is the whole point. Next steps (separate PRs once this lands): - Phase 2 server: `parse_telemetry_v1` in terra_v1/parser.rs with the field-encoding table from §3.2.4. - Phase 2 firmware: `terra_build_telemetry_packet` in a7677s-firmware/terra_protocol.c. - Phase 3: per-MQTT-session delta cache + FORCE_FULL emitter in iot-mqtt-server. Co-Authored-By: Claude Opus 4.7 lastCommitSHA: d19d07cd650bf17e458fbea69f3bf486092d3e0d message: 'Tasks Completed: 1 (Failed: 1, Cancelled 0), Skipped: 0' pipeline: greencapitaltrade/deadpool/main releaseNotesURL: https://github.com/greencapitaltrade/deadpool/releases/tag/v0.52.0 startedTimestamp: "2026-05-29T12:35:16Z" status: Failed steps: - kind: Stage stage: completedTimestamp: "2026-05-29T12:47:49Z" name: from build pack startedTimestamp: "2026-05-29T12:35:51Z" status: Failed steps: - completedTimestamp: "2026-05-29T12:35:52Z" name: Git Clone startedTimestamp: "2026-05-29T12:35:51Z" status: Succeeded - completedTimestamp: "2026-05-29T12:35:56Z" name: Next Version startedTimestamp: "2026-05-29T12:35:55Z" status: Succeeded - completedTimestamp: "2026-05-29T12:36:22Z" name: Jx Variables startedTimestamp: "2026-05-29T12:36:20Z" status: Succeeded - completedTimestamp: "2026-05-29T12:47:02Z" name: Build Cargo Install startedTimestamp: "2026-05-29T12:36:42Z" status: Succeeded - completedTimestamp: "2026-05-29T12:47:06Z" name: Check Registry startedTimestamp: "2026-05-29T12:47:03Z" status: Succeeded - completedTimestamp: "2026-05-29T12:47:09Z" name: Build Server Image startedTimestamp: "2026-05-29T12:47:07Z" status: Succeeded - completedTimestamp: "2026-05-29T12:47:10Z" name: Build Consumer Image startedTimestamp: "2026-05-29T12:47:09Z" status: Succeeded - completedTimestamp: "2026-05-29T12:47:13Z" name: Build Mqtt Image startedTimestamp: "2026-05-29T12:47:11Z" status: Succeeded - completedTimestamp: "2026-05-29T12:47:28Z" name: Promote Changelog startedTimestamp: "2026-05-29T12:47:13Z" status: Succeeded - completedTimestamp: "2026-05-29T12:47:32Z" name: Promote Helm Release startedTimestamp: "2026-05-29T12:47:28Z" status: Succeeded - completedTimestamp: "2026-05-29T12:47:49Z" name: Promote Jx Promote startedTimestamp: "2026-05-29T12:47:33Z" status: Failed version: 0.52.0 status: {}