Bind delivered binaries to verified build source
This commit is contained in:
@@ -40,7 +40,10 @@ func build(ctx context.Context) error {
|
||||
version into `buildinfo.Version`, and returns the compiler identity, normalized
|
||||
targets, artifact paths, filenames, and SHA-256 digests. Names follow
|
||||
`<binary>-<version>-<goos>-<goarch>`; Windows targets add `.exe`. A repeated
|
||||
target pair is built once, at its first position.
|
||||
target pair is built once, at its first position. Local builds may use modified
|
||||
source. `SourceVerified` is true only after a complete build observes clean
|
||||
source and the same HEAD before and after compilation; binary delivery requires
|
||||
that fact. This observation is not a source snapshot or attestation guarantee.
|
||||
|
||||
The default output directory is `<repository>/dist`; a relative `OutputDir` is
|
||||
resolved from the repository. Existing files with a selected artifact name are
|
||||
|
||||
@@ -54,7 +54,10 @@ understood. The command does not run candidate checks or publish tags.
|
||||
|
||||
Pass the Gitea credential explicitly. A `BuildResult` may be supplied for a
|
||||
binary-producing release; it must identify the same tagged repository commit
|
||||
and selected version, and its local artifacts must still match their digests.
|
||||
and selected version, its `SourceVerified` field must confirm the completed
|
||||
build's clean, unchanged source observations, and its local artifacts must still
|
||||
match their digests. Cleaning the checkout after a dirty build does not make
|
||||
that build eligible for delivery.
|
||||
Leave `Build` nil for a source-only release.
|
||||
|
||||
```go
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
# ReleaseKit implementation review and remediation
|
||||
|
||||
Status: Open. These findings describe work to address; this review changes no
|
||||
implementation or supported contract.
|
||||
Status: In progress. Resolution notes record completed fixes and verification.
|
||||
|
||||
Date: 2026-10-06
|
||||
|
||||
@@ -57,6 +56,8 @@ ownership or runtime dependency weight.
|
||||
|
||||
### R1 — High: Delivery accepts binaries built from uncommitted source
|
||||
|
||||
Status: Resolved.
|
||||
|
||||
Category: Correctness and divergence from tagged-source delivery.
|
||||
|
||||
**Evidence:** [The builder](../../internal/build/build.go) records `HEAD` in
|
||||
@@ -86,6 +87,13 @@ become eligible for tagged delivery merely by cleaning the worktree afterward.
|
||||
Cover source changes during a build and unchanged clean tagged builds through
|
||||
the supported API and CLI receipt path.
|
||||
|
||||
**Resolution:** Build results and private receipts now carry `SourceVerified`,
|
||||
set only after completed builds observe clean source and unchanged HEAD. Local
|
||||
dirty builds remain supported; binary delivery rejects their results and
|
||||
receipts even after checkout cleanup. API tests cover clean, initially dirty,
|
||||
and changed-during-build source; a CLI regression covers receipt delivery after
|
||||
cleanup. The offline suite and public boundary checks pass.
|
||||
|
||||
### R2 — High: Some successful page writes are reported as not attempted
|
||||
|
||||
Category: Failure handling and recovery-state correctness.
|
||||
|
||||
Reference in New Issue
Block a user