Skip to content

test(release): aggregate Standard Code Beta evidence - #185

Merged
Qiyuanqiii merged 1 commit into
mainfrom
codex/issue-140-release-integration
Aug 27, 2026
Merged

Qiyuanqiii merged 1 commit into
mainfrom
codex/issue-140-release-integration

Conversation

@Qiyuanqiii

@Qiyuanqiii Qiyuanqiii commented Aug 27, 2026 •

Copy link
Copy Markdown
Member

Summary

  • add the Go-owned standard_code_release_gate.v1 aggregate and CLI, strictly consuming the exact packaged bootstrap plus the independently produced test(product): validate packaged four-language loop and delivery UX #182 product and test(security): execute Standard Code attack and recovery matrix #181 security reports
  • bind all three reports to one source revision, EXE, portable ZIP, manifest, release metadata, four-repository fixture, and 40-case attack matrix; recompute file/report hashes and derive the only passing aggregate instead of accepting a caller-supplied verdict
  • wire the reports into .github/workflows/release-desktop.yml through a matching Draft Release, preserve the aggregate in the release artifact, and reverify it after artifact download immediately before publication
  • require the exact non-PR revision to be reachable from main, to have a successful central CI push run, and to use a prerelease version; the workflow can only convert the existing Draft into a GitHub Pre-release
  • document the two-stage attended-evidence flow, immutable transport boundary, manual revalidation command, and the separate release(windows): 交付 Microsoft Store 包与开箱即用单 EXE #123 signing / Microsoft Store boundary in ADR 0144 and the release runbook

Aggregate truth contract

Input Required truth
packaged bootstrap bootstrap_status=pass while honestly retaining release_gate_status=needs_full_matrix, all nine bootstrap checks pass, 40 cases prepared and zero falsely marked evidenced
product report (#182) self-hash and runbook digest valid; Go/Node/Python/Rust, Local/Docker readiness, five delivery surfaces, eight edge cases, four continuity cases, Windows 10/11 × 100%/200% rows, real failures/retries/jobs, and default-safe safeguards complete
security report (#181) report self-hash and append-only chain valid; exactly 40 cases and 75/75 applicable backend runs pass, zero failed/unexecuted runs, and all owned processes/directories are accounted for
current candidate revision, version, EXE/ZIP SHA-256 and sizes, portable manifest, release metadata, fixture manifest, and attack-matrix SHA-256 match every producer

The aggregate is deterministic: evaluated_at is the latest producer timestamp, output is create-exclusive and self-hashed, and it stores only bounded identity/count/safeguard facts rather than host paths, screenshots, commands, credentials, or raw logs.

Fail-closed boundaries

  • evidence assets are accepted only under the two fixed names on the matching Draft Release, exactly once each, non-empty, and at most 4 MiB
  • the packaged harness accepts the product/security reports only as a pair below the release output directory and rejects reparse points or an existing aggregate output
  • the Go verifier rejects missing or oversized files, symlink/path replacement during reads, invalid UTF-8, unknown JSON fields, trailing JSON values, producer-hash failure, count reduction, cross-candidate replay, and aggregate tampering
  • Full Access, Debug Maximum, Full CDP, fake runners, source overwrite, orphan/foreign process handling, skip, waiver, failed cases, or unexecuted cases cannot produce release_authorized=true
  • there is no retry, waiver, alternate matrix, caller-selected status, or reduced-count input

Central workflow and publication state

  1. An operator freezes an exact main candidate and collects the attended product and security reports against its reproducible EXE/ZIP.
  2. The two path-free reports are uploaded to a same-version Draft Release.
  3. A non-PR Desktop release run requires successful central CI for the exact SHA, rebuilds/reverifies the candidate, downloads only those fixed report assets, runs the honest bootstrap, and creates the aggregate.
  4. A tag publish job downloads the Actions artifact, reverifies the ZIP and recomputes the aggregate from all original inputs, replaces the Draft assets with the verified set, and only then publishes that Draft as a Pre-release.

Pull requests run the producer/aggregate contract tests and packaged bootstrap but deliberately do not emit a passing aggregate or publish a release. workflow_dispatch retains a verified Actions artifact but does not publish. A failure leaves the Draft unpublished.

Validation

  • go test -count=1 ./internal/releasegate ./cmd/releasegate ./internal/producte2e ./internal/packagede2e
  • go test -race -count=1 ./internal/releasegate ./internal/producte2e ./internal/packagede2e
  • go vet ./internal/releasegate ./cmd/releasegate ./internal/producte2e ./internal/packagede2e
  • staticcheck ./internal/releasegate ./cmd/releasegate (staticcheck 2026.1 / v0.7.0)
  • go test ./... -run '^$' -count=0
  • go mod verify
  • go mod tidy -diff
  • go run ./cmd/protocolregistry -check -baseline e6d157dd28758716f0aec57a0785aecd1f55d305 (31 families / 910 identifiers / 104 explicit test or golden entries)
  • go run ./cmd/surfacecheck
  • go run github.com/rhysd/actionlint/cmd/actionlint@v1.7.7 .github/workflows/release-desktop.yml
  • PowerShell AST parse of scripts/standard-code-packaged-e2e.ps1
  • live GitHub Actions API check for the exact-base central-CI query (push / completed / success)
  • git diff --check

The complete repository suites, frontend gates, reproducible Windows packaging, and packaged bootstrap remain mandatory clean-runner PR checks. They were not duplicated locally; no local Docker daemon or packaged attack matrix was started for this integration-only change.

GitHub Actions

  • CI run 33036364381 passed all 9 jobs; Go control plane completed in 21m36s, including the complete Go suite, focused race gate, full vet, and reachable-vulnerability scan
  • Desktop release run 33036364463 passed dependency boundaries in 1m00s and the reproducible/verified Portable ZIP job in 9m53s; publication was skipped by the PR-only boundary as designed

Base SHA: e6d157dd28758716f0aec57a0785aecd1f55d305
Head SHA: b7def4b8d248a47a235010d13715e6f2bdac3f4a

Closes #140
Refs #181
Refs #182
Refs #123

@Qiyuanqiii
Qiyuanqiii merged commit fba17a5 into main Aug 27, 2026
12 checks passed
@Qiyuanqiii
Qiyuanqiii deleted the codex/issue-140-release-integration branch August 27, 2026 04:09
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.

test(release): Standard Code Beta 工程门、packaged smoke 与安全矩阵

1 participant