The marketplace I had to defend from my own attack surface
Opening a public marketplace for agent workflows meant publishing an attack surface, and then having to defend it from my own convenience.

Opening a public marketplace for agent workflows meant publishing an attack surface, and then having to defend it from my own convenience.

A standard-library security fix forced a Go version bump, and then the release failed because the build image shipped an older toolchain.

Moving off tag-on-merge releases, where a release is a side effect of merging, to a model where the release is itself a reviewable change.

A CI component gated on the default branch fired on every Renovate schedule too, because a scheduled run is also on the default branch.

Nearly every CI job began by fetching and compiling the same tools. Baking them into one image instead, and what that saved per pipeline.

Three Hugo sites each hand-rolled a near-identical deploy job that only ever ran on merge, so nothing ever checked the build before it landed.

A secret scanner failed a merge request over a test key and a documentation PEM that the change did not contain. Scoping a scan properly.

Make a tagged release sign itself: record the KMS key and regenerate GoReleaser config with a signs block that calls gtb sign directly.

Three traps release-plz sets for a Rust workspace, starting with a default tag template that collides the moment you have more than one crate.

Publishing a seventeen-crate Rust workspace to crates.io, and why the same release configuration produced two different answers.
