Skip to content

docs: add a CHANGELOG — the release archives have been shipping without one - #45

Merged
0xmanhnv merged 1 commit into
mainfrom
docs/first-release-changelog
Aug 3, 2026
Merged

docs: add a CHANGELOG — the release archives have been shipping without one#45
0xmanhnv merged 1 commit into
mainfrom
docs/first-release-changelog

Conversation

@0xmanhnv

@0xmanhnv 0xmanhnv commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Context: the agent has never been released

86 commits on main, zero tags. Both release.yml and docker-publish.yml
are gated on v*, so neither has ever run. The openctemio/agent:demo-ci-fixed
image in use today was built by hand.

Before anyone pushes the first tag, I ran the pipeline against a throwaway one
to find out whether it works.

It works

Check Result
go build ./..., go vet ./... exit 0
go test ./... exit 0
goreleaser check config validated
goreleaser release --snapshot --skip=publish exit 0, 82s
archives produced linux/amd64, linux/arm64, darwin/arm64 (.tar.gz + .zip) + checksums
docker build exit 0

So a v0.1.0 tag would produce a real release. That is worth knowing before
pushing one, given this repo's history of workflows that had never actually run.

The one thing it reported

Six times, once per archive:

• no files matched                               glob=CHANGELOG*

.goreleaser.yaml asks for README.md, LICENSE* and CHANGELOG* in every
archive. The first two exist. The third never has:

$ tar -tzf dist/agent_..._linux_amd64.tar.gz
LICENSE
README.md
agent

The component customers install would ship its first release with no record
of what is in it.

What this adds

The record. Most of the 86 commits' value is security work, so that is where the
detail is:

  • two-tier SSRF guard on scanner targets, with a hard tier no flag can open
    (metadata endpoints, loopback, CGNAT, multicast, IPv6 link-local) and a soft
    RFC1918 tier behind AGENT_ALLOW_PRIVATE_TARGETS
  • dangerousToolFlags deny-list, completeness CI-enforced
  • RFC-007 §8 R1 runner target-guard
  • ExtraArgs validation and bounds checking
  • SHA-256 verification of gitleaks/trivy/nuclei/semgrep binaries at image build
  • three Go toolchain bumps for stdlib CVEs, now on go 1.26
  • the weekly image scan that was reporting green without scanning

plus the features: RFC-011 safe-check executor, RFC-007 Tenable runner mode,
risk-aware CI gate, RFC-008 PR-scoped baseline-diff, RFC-014 Phase 2 key
auto-renewal, RFC-001 asset-name normalisation.

Verified

Re-ran the pipeline with this file present — warning gone, and:

$ tar -tzf dist/agent_..._linux_amd64.tar.gz
CHANGELOG.md
LICENSE
README.md
agent

…ut one

The agent has 86 commits on main and zero tags, so its release pipeline has
never run: both release.yml and docker-publish.yml are gated on `v*`. The image
in use today was built by hand.

Before the first tag is pushed I ran the pipeline against a throwaway tag to see
whether it works. It does — GoReleaser produces linux/amd64, linux/arm64 and
darwin/arm64 archives with checksums in 82 seconds, the config validates, and
the Docker image builds. One thing it reported, six times, once per archive:

    • no files matched                               glob=CHANGELOG*

.goreleaser.yaml asks for README.md, LICENSE* and CHANGELOG* in every archive.
The first two exist. The third has never existed, so every archive would ship
with no record of what is in it — for the component customers install, on its
first release.

This is that record: what the 86 commits added, and in particular the security
work, which is most of the value. Two-tier SSRF guard with the hard tier no flag
can open, the dangerousToolFlags deny-list, the RFC-007 runner target-guard,
ExtraArgs bounds checking, SHA-256 verification of the scanner binaries at image
build, and three Go toolchain bumps for stdlib CVEs.

Re-ran the pipeline with this file present: the warning is gone and
CHANGELOG.md is in the archive alongside LICENSE, README.md and the binary.
@0xmanhnv
0xmanhnv merged commit eac456d into main Aug 3, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant