towerops/.forgejo/workflows
Graham McIntire e54ee75513 Rewrite protobuf encoding/decoding in pure Gleam with integrated validation (#104)
Replace the protobuf hex package (agent.pb.ex) and hand-written validator
(validator.ex) with a pure Gleam implementation: wire format primitives,
all 23 message types, encode/decode functions, and validation merged into
decode. Thin Elixir wrappers in agent.ex preserve the existing struct API.

- Wire format: varint, length-delimited, double (IEEE 754 via FFI), tag encode/decode
- Types: all proto3 message types as Gleam custom types with enums and oneof
- Decode: field-level parsing with integrated validation (UUID, IP, hostname, limits)
- Encode: proto3 default omission, bytes_tree concatenation, map/repeated fields
- Wrappers: Elixir structs with encode/decode delegating to Gleam, enum atom conversion
- Remove {:protobuf, "~> 0.12"} dependency

Reviewed-on: graham/towerops-web#104
2026-03-21 16:08:40 -05:00
..
e2e-tests.yaml e2e-workflow-separate (#67) 2026-03-17 16:30:45 -05:00
pr-tests.yaml Rewrite protobuf encoding/decoding in pure Gleam with integrated validation (#104) 2026-03-21 16:08:40 -05:00
production.yaml Integrate Gleam into the build pipeline and rewrite three pure-function modules (#98) 2026-03-21 07:30:36 -05:00
renovate.yaml chore(config): add Renovate and build workflows 2026-03-03 16:54:19 -06:00
staging.yaml e2e-workflow-separate (#67) 2026-03-17 16:30:45 -05:00