Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
46f95c0
fix: address CodeRabbit review feedback from PR #121
claude Apr 5, 2026
d2ec159
fix: address CodeRabbit review feedback from PR #122
claude Apr 7, 2026
201a67b
fix: address remaining CodeRabbit feedback on PR #129
claude Apr 7, 2026
eeaf3e4
fix: add global security definition to OpenAPI spec (Checkov CKV_OPEN…
claude Apr 7, 2026
79e7cf6
docs: clarify per-arch image tags exist but are for internal manifest…
claude Apr 7, 2026
561c138
fix: add default "hard" to enforcement in SetBudgetRequest OpenAPI spec
claude Apr 9, 2026
fdc1860
fix: add produces/consumes annotations and regenerate OpenAPI spec wi…
claude Apr 9, 2026
f152d0b
fix: improve govulncheck logging and add missing metric docstrings
claude Apr 9, 2026
a5b3e83
fix: emit GHA error annotations for unknown govulncheck vulnerability…
claude Apr 9, 2026
f40246e
fix: use file-level GHA annotation for unfixed vulnerability IDs
claude Apr 9, 2026
e03d987
fix: exclude stdlib crypto/tls and crypto/x509 govulncheck vulns
claude Apr 9, 2026
9c04fc5
fix: also exclude GO-2026-4946 (crypto/x509 policy-validation DoS)
claude Apr 9, 2026
873857a
fix: also exclude GO-2026-4869 (archive/tar unbounded memory)
claude Apr 9, 2026
53ba1ba
fix: exclude GO-2026-4865 (html/template XSS via grpc→net/trace)
claude Apr 9, 2026
02821fc
ci: clarify govulncheck exclusion removal condition
claude Apr 9, 2026
47addb4
fix: restore top-level security, health probe overrides, and addition…
claude Apr 9, 2026
4eff444
build: add spec-patch target to restore OpenAPI fields lost on swag r…
claude Apr 9, 2026
e46c6e8
build: use --ascii-output in jq patch and normalize swagger.yaml form…
claude Apr 9, 2026
5b4297e
fix: add date/date-time format annotations to timestamp fields in Ope…
claude Apr 9, 2026
cb8afb6
fix: use make spec in CI and add --requiredByDefault to Makefile spec…
claude Apr 10, 2026
cae5f7d
fix: sort required arrays in spec-patch to stabilize Spec Freshness CI
michaelmcnees Apr 11, 2026
442973f
fix: align committed swagger.yaml key ordering with make spec output
claude Apr 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/release-engine.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ jobs:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- uses: docker/setup-qemu-action@v3

- uses: docker/setup-buildx-action@v3

- name: Set goreleaser tag
Expand Down
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ ai/

# Internal development process (ephemeral implementation plans)
docs/superpowers/plans/
plans/
marketing/variants/
/plans/
/marketing/variants/

# Node / Bun
node_modules/
Expand Down
4 changes: 2 additions & 2 deletions RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ The automated CI path (Version PR → merge) requires no local tooling beyond gi
5b. release-helm.yml → helm push OCI + GitHub Release
```

> **Note on workflow naming:** `release-please.yml` is named after a tool we evaluated but didn't adopt — it actually runs the Changesets CLI. A rename to `changeset-version.yml` is tracked in [the relevant issue].
> **Note on workflow naming:** `release-please.yml` is named after a tool we evaluated but didn't adopt — it actually runs the Changesets CLI. A rename to `changeset-version.yml` is tracked in [dvflw/mantle#123](https://github.com/dvflw/mantle/issues/123).

## Step 1: Add a Changeset (During Development)

Expand Down Expand Up @@ -90,7 +90,7 @@ Those tags trigger the package-specific release workflows:

**Floating tags** (`major.minor`, `major`, `latest`) are only pushed for stable releases. For pre-release versions (e.g. `0.5.0-rc.1`) the versioned image is pushed but floating tags are skipped.

**Platform-specific image tags:** the pipeline no longer publishes per-arch tags like `ghcr.io/dvflw/mantle:<version>-amd64`. Only the multi-arch manifest tag (`ghcr.io/dvflw/mantle:<version>`) is pushed. Update any CI or deploy configs that reference the old suffixed tags.
**Platform-specific image tags:** per-arch tags like `ghcr.io/dvflw/mantle:<version>-amd64` and `ghcr.io/dvflw/mantle:<version>-arm64` exist in GHCR as internal references required by the multi-arch manifest, but are not intended for direct consumption. Always pull the multi-arch manifest tag (`ghcr.io/dvflw/mantle:<version>`), which selects the correct platform automatically. Update any CI or deploy configs that reference the old suffixed tags directly.

**Trivy scan policy:** the `trivy` job runs after `release` with `exit-code: 1` on `CRITICAL` or `HIGH` CVEs. A failure marks the workflow run as failed but does not retract the already-published release. If a CVE scan fails post-release, open a patch release issue immediately.

Expand Down
49 changes: 38 additions & 11 deletions packages/engine/.goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,18 +48,45 @@ changelog:
order: 999

dockers_v2:
- ids: [mantle]
- image_templates:
- "ghcr.io/dvflw/mantle:{{ .Version }}-amd64"
use: buildx
ids: [mantle]
goos: linux
goarch: amd64
dockerfile: Dockerfile.goreleaser
images:
- "ghcr.io/dvflw/mantle"
tags:
- "{{ .Version }}"
# Floating tags (major.minor, major, latest) are only pushed for stable
# releases. Empty template results are skipped by goreleaser, so these
# evaluate to "" and are dropped for any pre-release version.
- "{{ if not .Prerelease }}{{ .Major }}.{{ .Minor }}{{ end }}"
- "{{ if not .Prerelease }}{{ .Major }}{{ end }}"
- "{{ if not .Prerelease }}latest{{ end }}"
build_flag_templates:
- "--platform=linux/amd64"
- image_templates:
- "ghcr.io/dvflw/mantle:{{ .Version }}-arm64"
use: buildx
ids: [mantle]
goos: linux
goarch: arm64
dockerfile: Dockerfile.goreleaser
build_flag_templates:
- "--platform=linux/arm64"

docker_manifests:
- name_template: "ghcr.io/dvflw/mantle:{{ .Version }}"
image_templates:
- "ghcr.io/dvflw/mantle:{{ .Version }}-amd64"
- "ghcr.io/dvflw/mantle:{{ .Version }}-arm64"
- name_template: "ghcr.io/dvflw/mantle:{{ .Major }}.{{ .Minor }}"
image_templates:
- "ghcr.io/dvflw/mantle:{{ .Version }}-amd64"
- "ghcr.io/dvflw/mantle:{{ .Version }}-arm64"
skip_push: "{{ if or .IsSnapshot .Prerelease }}true{{ end }}"
- name_template: "ghcr.io/dvflw/mantle:{{ .Major }}"
image_templates:
- "ghcr.io/dvflw/mantle:{{ .Version }}-amd64"
- "ghcr.io/dvflw/mantle:{{ .Version }}-arm64"
skip_push: "{{ if or .IsSnapshot .Prerelease }}true{{ end }}"
- name_template: "ghcr.io/dvflw/mantle:latest"
image_templates:
- "ghcr.io/dvflw/mantle:{{ .Version }}-amd64"
- "ghcr.io/dvflw/mantle:{{ .Version }}-arm64"
skip_push: "{{ if or .IsSnapshot .Prerelease }}true{{ end }}"

release:
github:
Expand Down
2 changes: 1 addition & 1 deletion packages/engine/internal/server/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ type StepSummary struct {
// handleListExecutions handles GET /api/v1/executions with query param filters.
//
// @Summary List executions
// @Description Returns a paginated list of workflow executions for the authenticated team. Supports filtering by workflow name, status, and age.
// @Description Returns a list of workflow executions for the authenticated team, most recent first. Supports filtering by workflow name, status, and age. Use the limit parameter to cap results (default 20).
// @Tags executions
// @Param workflow query string false "Filter by workflow name"
// @Param status query string false "Filter by status" Enums(pending,running,completed,failed,cancelled)
Expand Down
Loading
Loading