-
v0.1.7 Stable
released this
2026-07-04 22:07:24 +00:00 | 272 commits to main since this releaseAdded
- Pin resolver: versioned artifacts get real deploy records (traceability Phase B). A new
optionalspec.deploy.pinonPipelineProject(repo/file/kind/match) says where a project's
deployed version is pinned in a carrier gitops repo (a FluxGitRepositoryref.tag or a kustomize
image newTag). A leader-only 5-min tick reads that pin at the carrier's latest deployed sha, parses
the version, resolves it to the artifact's release sha via the Forgejo tags API, and mints an
artifactPipelineDeploy— so e.g. pipelines-operator's Deploy pane shows "v0.1.6 went live,
carried by seanfarm@<short>" instead of staying empty. The mint is an ensure-status upsert
(self-heals a half-created CR after a mid-mint restart; refreshes a rollback that re-pins an older
version) and idempotent per (artifact, version). Reads Forgejo anon over the trust-manager ca-bundle
(mounted into the manager pod).parsePinis table-tested; the resolver has envtest coverage
(mint / idempotent / version-bump chain / repair / rollback / no-carrier) against a fake Forgejo.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Pin resolver: versioned artifacts get real deploy records (traceability Phase B). A new
-
v0.1.6 Stable
released this
2026-07-04 20:13:04 +00:00 | 277 commits to main since this releaseAdded
- Deploy/release provenance projection (end-to-end change traceability, Phase A). The
WorkflowProjector now reads new Argo output params (fromSha,outcome,image) and the
seanfarm.io/shipped-bylabel, and projects:PipelineDeploy.status:fromSha(previously-deployed commit — the base of "changes
included in this deploy"),version+releaseRef(links a deploy to its tagged release),
andoutcome(deployed/superseded/failed/rolled-back— distinguishes a real deploy
from a superseded skip, which both endPhase: Succeeded). PlusfromVersion/
carrierProject/carrierShafields for Phase B artifact deploys (added, not yet populated).PipelineRelease.spec.requestedBy(who shipped, from the label — outlives the workflow) and
status.image(published artifact ref).
These ride instatus(projected every reconcile with coalesce-nonempty stickiness) because the
run only publishes them at terminal and spec is written once at create.
- Retention for the traceability spine:
PipelineDeployandPipelineReleasenow count-prune
per project (deployRetention = 400,releaseRetention = 500) — mirroring the build prune,
create-gated, never touching the just-written or a non-terminal CR. Far more generous than the
50-count builds; git/Forgejo remains the durable record beyond them.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Deploy/release provenance projection (end-to-end change traceability, Phase A). The
-
v0.1.5 Stable
released this
2026-07-03 23:41:39 +00:00 | 282 commits to main since this releaseChanged
- Rendered objects follow the fleet's staging→trunk rename (2026-07-04): the trunk Sensor
triggers onrefs/heads/trunk, the CI Sensor excludestrunk(and gains the
release-cadence/machinery-branch exclusion the hand-authored dirs already had — a parity
gap), and the trunk ForgejoBranchProtection renders as<project>-trunk/
branchName: trunk(the old<project>-stagingchild is pruned by label on converge).
CRD:spec.branchProtection.staging→spec.branchProtection.trunk(both unset in every
live CR; defaults TRUE). Parity testdata resynced from the renamed sean/pipelines dirs.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Rendered objects follow the fleet's staging→trunk rename (2026-07-04): the trunk Sensor
-
v0.1.4 Stable
released this
2026-07-03 14:58:48 +00:00 | 287 commits to main since this releaseFixed
- Reap zombie Change CRs. A build/release/deploy whose workflow was deleted BEFORE
the projector observed a terminal phase (superseded by cancel-stale, cancelled, or
lost while the operator was down) stayedRunningforever — a perpetual "Running"
row on the dashboard, sincepruneBuildsdeliberately never touches a non-terminal
CR. A new leader-only reaper (reapZombies, ticking every 5m + at startup) deletes
a non-terminal CR whose referenced workflow is DEFINITIVELY absent (authoritative
APIReader NotFound) and which has been idle past a 10m grace. Three guards keep it
from ever deleting a live or just-finished CR — terminal phase skipped, sub-grace
age skipped, only a certain workflow-not-found deletes — plus a ResourceVersion
precondition so a CR that a re-build made live again between the sweep's list and
delete is spared. envtest covers reap / live-workflow-spared / young-spared /
terminal-spared / blank-ref-spared / release+deploy.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Reap zombie Change CRs. A build/release/deploy whose workflow was deleted BEFORE
-
v0.1.3 Stable
released this
2026-07-03 13:32:11 +00:00 | 292 commits to main since this releaseFixed
- Classify: a
PipelineReleasenow requires a SEMVER version. Gitops projects
(seanfarm/platform-seanfarm/pipelines) have no VERSION file, so their staging
deliveries emit a sha-identity "version" (a bare commit sha) — those were wrongly
projected as releases keyed by the sha, putting ~36vc71c70554148-style rows in
the dashboard Release pane.looksLikeSemverkeeps only x.y[.z]; sha-identity
deliveries now Skip (no CR), like a versioned project's-devdelivery.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Classify: a
-
v0.1.2 Stable
released this
2026-07-03 12:16:45 +00:00 | 297 commits to main since this releaseAdded
- Change model (Phase 1): PipelineBuild / PipelineRelease / PipelineDeploy
CRDs + a WorkflowProjector controller. A pipeline run's kind is now decided
ONCE, server-side, in Go (internal/project.Classify) and PROJECTED into a
Change CR, so the dashboard's three panes becomekubectl getlists instead
of a client-side run-classifier. This kills the misfile class the heuristic
produced: a run never changes kind (no more kind-flapping or failed-dev-in-
RELEASE), a clean-VERSION build is a Build withstatus.releasable=true(not
a release parked in the Build pane), and a release-machinery-branch build is
filtered in ONE place (PlumbingBranchPrefixes) instead of 13 per-sensor
exclusion lists. Classify is table-tested against 69 real workflow shapes
(100% coverage); the projector's signal extraction + attempt-merge are unit-
tested; CRs carry NO ownerRef to their workflow (they outlive its TTL-GC) and
PipelineBuilds are retention-pruned per project. The Workflow informer is
label-scoped to pipeline runs to bound cache memory. (Phase 2 will move CR
creation to the actors — sensors/shipd — retiring the version-cleanliness
signal for actor-provenance; see sean/pipelines docs/CHANGE-MODEL.md.)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Change model (Phase 1): PipelineBuild / PipelineRelease / PipelineDeploy
-
v0.1.1 Stable
released this
2026-07-02 21:01:28 +00:00 | 302 commits to main since this releaseAdded
- go-operator-image renderer: the buildkit template now covers both buildkit
taxonomies (only deltas: promoteTemplate + staging deadline) — forgejo/
kratos/openbao/pipelines-operator registrations can become CRs. - PARITY GATE: rendered objects are asserted semantically equivalent to the
hand-authored sean/pipelines projects// reference dirs (imported as
testdata), with deviations explicit (CI filter is a superset — machinery-
branch exclusions; provision Job drops ArgoCD hook annotations). The gate
caught a real promoteTemplate bug on its first run.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- go-operator-image renderer: the buildkit template now covers both buildkit
-
v0.1.0 Stable
released this
2026-07-02 18:50:09 +00:00 | 307 commits to main since this releaseAdded
- PipelineProject CRD (pipelines.sean.farm/v1alpha1): a repository's CI/CD
registration as ~20 lines of data. The reconciler (libseanfarm harness)
renders and server-side-applies the per-taxonomy child set — ci/staging
Sensors, ForgejoBranchProtections, the provision Job, the build-script
ConfigMap, and an optional release-cadence CronWorkflow — prunes children a
spec change no longer renders, and cleans up cross-namespace children via
its finalizer. First rendered taxonomy: go-library-tag (the
libseanfarm-operator reference shape); the other six are typed but Terminal
until their renderers land.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- PipelineProject CRD (pipelines.sean.farm/v1alpha1): a repository's CI/CD