Repository navigation
Track v0.4.0 production graduation #112
Description
Objective
Graduate only the supported CLI + GitHub Action + disposable QEMU/KVM validation boundary to stable v0.4.0. The API/UI demo, runtime loading, agent, registry, SaaS, Firecracker, and virtme-ng remain experimental and explicitly out of scope.
This issue is the audit trail and checklist. Manual runs are shakeouts only and do not count as scheduled graduation campaigns. The earlier Yusuf-dependent review contract was superseded by the solo-maintainer design merged in #114; historical comments remain below as audit history.
Solo-maintainer release controls
-
mainrequires strict status checks, admin enforcement, conversation resolution, and blocks force-pushes/deletion, with zero required human approvals -
production-releasehas no human reviewers, a 15-minute wait timer, no admin bypass, and an exactv*deployment policy - Active immutable
v*tag ruleset blocks update/deletion and has no bypass actors - Tag workflow can only build, attest, sign, and stage a private draft
- Separate
workflow_dispatchpromotion must run on the exact tag and re-verify the candidate run ID, full commit, digest, typed confirmation, draft assets, checksums, attestations, Sigstore signatures, image version, and release channel - Live
scripts/check-production-environment.shpasses insolo-maintainermode - Deprecated
actions/attest-sbomwrapper migrated to pinnedactions/attestin ci: migrate SBOM attestations to actions/attest #116; all 10 PR checks and post-merge workflows passed
Release candidate
- Immutable annotated
v0.4.0-rc.3tag resolves tocba1e09537f2e05e4ba7278efdb5c2d044d1889b - Candidate run 30552866250 passed release quality, amd64/ARM64 build, native ARM64 execution, positive VM validation, classified-negative VM validation, multiarch image/version verification, signing, provenance, SBOM, and evidence attestation
- Candidate evidence binds run
30552866250, attempt1, the exact tag/commit, prerelease channel, and image digestsha256:842ebbc5746dcfcf98823407a762bdf379e24beb8ea20941ff77f9a74a1a2ac6 - Exact-input promotion run 30553637272 waited 15 minutes, re-verified all bindings, and succeeded
- GitHub release is a public prerelease with ten verified assets
- GHCR RC tag is amd64+arm64 at the evidence digest; stable
0.4was not created andlateststayed atsha256:4858cedde87681b1af4876bb8c869c7c1df0f5721764448a47042fe616e65102
Pre-campaign operational work
- Deploy RC3 to the public demo at
bpfcompat.kernelguard.netwhile keeping it visibly Technical Preview and outside the production claim - Verify public
/livez,/readyz, HTTPS/security headers, KVM, watchdog, runtime-execute disabled, exact version/commit/checksum, and retained rollback binary - Resolve or explicitly disposition the seven stale enterprise-kernel baselines in Stale kernel baselines (weekly freshness report) #89 before campaign 1
- Execute and record a deliberate release-promotion rollback drill using immutable before/after image digests, exact operator, commands, elapsed recovery, signature/provenance/version verification, and
[bpfcompat-rollback-drill:v1] - Exercise and record the promotion incident path, proving an invalid deployment remains fail-closed
Four scheduled campaigns
Only schedule events from .github/workflows/latest-kernel-compatibility.yml count. Each must be unique, chronological, 6–8 days apart, complete within 120 minutes, have target p95 <= 12 minutes, and contain zero infra_error targets.
- Campaign 1 — scheduled run 30790938510 on 2026-08-03
- Campaign 2 — Monday 2026-08-10 03:21 UTC
- Campaign 3 — Monday 2026-08-17 03:21 UTC
- Campaign 4 — Monday 2026-08-24 03:21 UTC
For every run, record the workflow URL, artifact name, commit SHA, start time, report SHA-256, target status summary, infrastructure-error count, p95 target duration, and total workflow duration. Any supported-boundary behavior change after the window starts requires a new RC and restarts the window; documentation/release-tooling-only changes do not.
Independent ecosystem and consumer evidence
- Capture the first successful scheduled Falco run after
falcosecurity/libs@f6fed8e/ falcosecurity/libs#3061 - Verify the Falco artifact hash and expanded RHEL-family profile coverage
- Run clean-install, source-build, Action, container, and external-consumer canaries against RC3
- Verify 24-hour and 72-hour post-publication canaries; investigate every failure before graduation
Post-v0.4 ecosystem follow-up (not a v0.4 gate)
Confirmed adoption is a 1.0 ecosystem-readiness goal, not a technical prerequisite for the supported v0.4 boundary and not a substitute for its evidence.
- Invite at least two controlled pilot evaluations through the adopter issue form without claiming adoption or endorsement
- Record any confirmed public pilot only with explicit listing permission in
ADOPTERS.md
Stable-release gate
- Download the four campaign artifacts, expanded Falco artifact, candidate evidence, rollback note, incident note, and canary evidence into one private evidence directory
- Build
readiness/input.jsonwith exact relative paths and SHA-256 values plus the solo operator confirmation marker - Run
scripts/production-readiness-report.sh readiness/input.json readiness/bpfcompat-0.4.0-readiness.mdwithout the test-only attestation bypass - Commit
docs/releases/bpfcompat-0.4.0-readiness.{md,json}in the final release PR - Set
stable_version: 0.4.0,release_version: 0.4.0, andrelease_channel: stable - Tag only the reviewed merge commit, complete the exact-input wait-gated promotion, and publish
- Verify release assets, signatures, SBOM, provenance, image aliases, installer defaults, Action consumption, and stable canaries at 24h and 72h
Earliest defensible stable release: 2026-08-24/25, only if every gate passes and the campaign window is not reset.
Activity
ErenAri commentedon Jul 29, 2026
RC1 audit update
v0.4.0-rc.1tag was created on720addf2a9af4180620aa8df89982a4efc8875ae.rgdependency.v0.4.0-rc.2metadata are under independent review in Fix tag release quality gate #113. Therc.1tag will not be moved or reused.ErenAri commentedon Jul 29, 2026
@yusuf-demirel4
v0.4.0-rc.2has reached the separate protected promotion gate in release run 30495097626. Before approvingproduction-release, please inspect the draft assets andrelease-candidate-evidence.json. Completed successfully:Please approve the environment only if the evidence is acceptable; otherwise reject it and record the concern. The release and RC image tag remain unpublished until this decision.
ErenAri commentedon Jul 29, 2026
Independent RC2 draft verification
I downloaded the private draft assets and verified them independently while the protected environment remains pending:
SHA256SUMSpasses for amd64 CLI, arm64 CLI, and static validatorv0.4.0-rc.2, commitceddee960e99, Go1.25.12release-candidate-evidence.json, bound torelease-artifacts.yml30495097626, full commitceddee960e997d0499edbe74c688f035dfa805f8, tagv0.4.0-rc.2, channelprerelease, and image digestsha256:8f03b6c5bb6f3fae79b78f26979d523f4c449080eefd509657c05e805bc55e8cSHA256SUMSand the CycloneDX SBOM with the exact tag-workflow identityThe draft is still private and the promotion job remains
waiting; only @yusuf-demirel4 can approve it.ErenAri commentedon Jul 30, 2026
RC3 publication and demo deployment evidence
cba1e09537f2e05e4ba7278efdb5c2d044d1889b.ghcr.io/kernel-guard/bpfcompat@sha256:842ebbc5746dcfcf98823407a762bdf379e24beb8ea20941ff77f9a74a1a2ac6.0.4remains absent andlatestremainssha256:4858cedde87681b1af4876bb8c869c7c1df0f5721764448a47042fe616e65102.SHA256SUMS; amd64 reportsv0.4.0-rc.3 (cba1e09537f2)built with Go 1.25.12.v0.3.2-1-gc940cdc; public and local recovery were verified. A corrected bounded retry then deployed RC3 successfully.livez=ok,readyz.version=v0.4.0-rc.3, remains visibly Technical Preview, serves HSTS/CSP/frame/referrer/content-type protections, has KVM and the healthcheck timer active, and reportsruntime_execute_enabled=false.07a8394d512f8dec2a3a773473cd4c210fa82825586cce03bee8daac3d64a0a0. Previous deployment retained under/var/lib/bpfcompat-deployments/20260730T150745Zfor rollback.ErenAri commentedon Jul 30, 2026
Rollback and fail-closed incident evidence
production-drillenvironment, then completed successfully.[bpfcompat-rollback-drill:v1]evidence names operatorErenAri, stable digestsha256:4858cedde87681b1af4876bb8c869c7c1df0f5721764448a47042fe616e65102, RC3 digestsha256:842ebbc5746dcfcf98823407a762bdf379e24beb8ea20941ff77f9a74a1a2ac6, and exact completion time2026-07-30T15:45:40Z.rollback-drill-v0.4.0-rc.3and protectedlatestresolve to the original stable digest. Evidence JSON SHA-256:6dea4ec98f0debff511b5cd7a86d2eebbe0189d95264cca718371d7f6695ea30.main. Theproduction-releasedeployment policy permits only exactv*tags, so GitHub rejected the job before allocating a runner; it had zero steps and completedfailurein about five seconds.0.4.0-rc.3remained at the attested digest, stablelatestremained unchanged, and no0.4alias was created.The rollback drill is intentionally isolated from real release aliases; it proved the mutation/recovery mechanics without weakening or exercising the stable channel.
ErenAri commentedon Jul 30, 2026
Exact RC3 canary evidence
2026-07-30T16:14:20Z.[bpfcompat-rc-canary:v1]binds immutable tagv0.4.0-rc.3, commitcba1e09537f2e05e4ba7278efdb5c2d044d1889b, and image digestsha256:842ebbc5746dcfcf98823407a762bdf379e24beb8ea20941ff77f9a74a1a2ac6.pass.scap-openmodern_bpf loading, KubeArmor build-on-target system_monitor loading, and Inspektor Gadget published OCI gadget validation.00679feba40d98eeb6c91cffa5a6726827d7c939c1b43a16df87f4aa50bb9ddc; all seven component hashes independently reverified from the downloaded artifact.The T+24h and T+72h observations remain deliberately unchecked until their scheduled runs complete.
ErenAri commentedon Jul 30, 2026
Pre-campaign kernel freshness resolved
8e492e8aa272ae7fd4ae392128e193a53c910c6b.4c1083c5203a2970c1a64ac5c6434af71cbecabce6c442ba9bf04d9cb119193e.6.12.0-204.92.4.4.el9uek.x86_64, attached the required BPF program, and captured the required execve trace event; report SHA-256c967c8fd950bbec181b75e80c9ac5677d183ac42291d008823bc50c3c239f158.freshness.jsonSHA-256:0985d31f8e121eb30c06af641fa455a16ba6379004fc8891d468ea44965e2c73.uncovered; no Oracle result is presented as RHEL evidence.ErenAri commentedon Jul 30, 2026
Pre-campaign technical rollup
make production-tech-checkonmain@8e492e8aa272ae7fd4ae392128e193a53c910c6breportedreadyat2026-07-30T16:19:40Z: Go tests/vet, hostile artifact/configuration suite, release consistency, generated documentation, and required support/SLO/incident/schema/upgrade contracts all passed.READYat the same commit for build, vet, gofmt, unit tests, govulncheck, release consistency, and generated docs.1795157fee53e932f4d2cdfc75c67b9cb9e687721c63e11ee101c2c4d39fb7a3.This is a manual pre-campaign shakeout; it does not substitute for the four dated scheduled VM campaigns.
ErenAri commentedon Jul 30, 2026
Graduation evidence contract hardened
PR #126 merged at
7075bde70566334f8c96337f9739d36a6b311b9fwith every protected check green.The production-readiness generator and stable tag gate now require and validate:
manual,t-plus-24h,t-plus-72horder;scheduleprovenance for both timed observations;[bpfcompat-promotion-incident:v1]fail-closed evidence.Regression tests prove missing T+72h, a manual run presented as T+24h, and unmarked incident evidence are rejected. The stable workflow also refuses readiness JSON without all three canaries and completed incident evidence.
The ignored private bundle at
evidence/graduation-v0.4.0/is seeded with the attested candidate, rollback artifact, manual canary and all component files, and incident note. Candidate attestation verified with checksum-verified GitHub CLI 2.96.0. Future scheduled artifacts remain intentionally absent.ErenAri commentedon Aug 6, 2026
Elapsed scheduled-gate audit — 2026-08-06
RC observation windows: PASS
scheduleevent. It completed all five paths successfully and emitted[bpfcompat-rc-canary:v1]with milestonet-plus-24h, exact RC3 commitcba1e09537f2e05e4ba7278efdb5c2d044d1889b, and image digestsha256:842ebbc5746dcfcf98823407a762bdf379e24beb8ea20941ff77f9a74a1a2ac6. Evidence SHA-256:0134dc4ddef908ca3284612953245ea26aea00aa4b3fab575a92b9445930c7c5. Nested ecosystem run: 30649370618.scheduleevent with the same exact RC bindings and all five paths passing. Evidence SHA-256:bb57039cc075995cd0d5f520f7b3adea62bd20ce901768c4b40162dd3c4fce37. Nested ecosystem run: 30756205291.Campaign 1: PASS
bpfcompat-latest-kernel-30790938510, commit7075bde70566334f8c96337f9739d36a6b311b9f.2026-08-03T06:42:56Z; workflow duration: 3m02s.production-campaign.json:1ca1d6b2f61c413e90c140bc9ef12906a6ad41c3c48b9ac1afae73100e44e4fe.First qualifying upstream Falco schedule: FAIL before VM execution
1a1d1e7ec9374cff24e9d03f55422590acb8fc92, which is 18 commits after and directly descended fromf6fed8edf6a43c3ecbba4bcd44e7df175785d08e.scap-openbuild succeeded. No compatibility target ran and no report artifact was produced.f1ba21f): that Action downloads the amd64 CLI and validator, then runssha256sum -c SHA256SUMS; the release checksum file also lists the arm64 CLI, which was not downloaded, so verification fails on the missing file.schedulerun are still required.ErenAri commentedon Aug 6, 2026
2026-08-06 consumer-pin remediation
The v0.3.6 prebuilt consumer failure has been remediated at both controlled call sites without changing supported runtime behavior:
The first #129 check set was damaged solely by the active GitHub Actions major outage: unrelated jobs failed during runner setup while resolving pinned Actions with HTTP Service Unavailable. A branch-only empty retry commit created a clean nine-check set and will be omitted by squash merge. Those checks are currently queued behind the outage; branch protections remain intact.
Manual Falco validation proves the fix but does not satisfy the graduation gate. Keep the Falco items unchecked until falcosecurity/libs#3076 merges and the first subsequent upstream schedule run succeeds with a verified artifact.
ErenAri commentedon Aug 9, 2026
2026-08-09 no-wait completion audit
5aa81a235de62d941eedf1fd7f2d6ec636c1130b. It does not modify application code ormatrices/latest-kernel-sweep.yaml, so Campaign 1 remains valid.d4b568579134792c112b9a33fe92d7419a288c5854a316e293c3823e654e6f8f; campaign manifest SHA-256:d257fec790010c4262f3edc893d900f1a181e0e03bd3f91da7655da655b15f1b. Its recorded event is correctlyworkflow_dispatch, so this is a shakeout and does not count as Campaign 2.5.10.260-259.1061and AL20236.1.177-224.371; the branch freshness oracle reports 0 stale of 57 checked. test: validate current Amazon kernels #133 remains post-v0.4 because it changes supported executor behavior and merging it now would reset the campaign window.The only v0.4 gates still open are future scheduled Campaigns 2–4, upstream maintainer merge/workflow approval for falcosecurity/libs#3076 followed by a successful upstream scheduled run, and final evidence assembly/publication after those inputs exist.