Skip to content

fix(ci): share release candidates and enforce quality gates (TAN-843) - #1933

Merged
tacshade merged 9 commits into
mainfrom
codex/tan-843-ci-cleanup
Sep 5, 2026
Merged

fix(ci): share release candidates and enforce quality gates (TAN-843)#1933
tacshade merged 9 commits into
mainfrom
codex/tan-843-ci-cleanup

Conversation

@tacshade

@tacshade tacshade commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Tandem's foundation checks are passing, but the same Linux release candidate was built independently for enterprise composition and container scanning. Desktop Clippy also hid three errors behind || true, and floating Rust installs could introduce unrelated failures overnight.

This is the first broader cleanup slice for TAN-843. It is based on #1931's verified head 4b37048e. Merge #1931 first; until then this PR includes its commits. The cleanup itself is these two commits. The PR targets main so the existing main-targeted quality workflows actually run.

Changes:

  • Build the pinned standard + enterprise-full compositions once in Security Assurance; remove Engine CI's duplicate release job.
  • Pass the standard candidate by immutable artifact ID within the same workflow run. Verify producer digests, checkout SHA, run/attempt, feature profile and build inputs before using it. Keep the existing Docker candidate digest and reviewed release-pin checks.
  • Share the container build/SBOM/scanner implementation. Panel and builder scans stay independent of the Rust build. Add a result check that fails on failed, cancelled or skipped assurance jobs.
  • Pin quality jobs to the already-tested Rust 1.98.0 and add a scheduled/manual new-stable canary. The pinned Linux release builder stays on 1.95.0.
  • Cache eval builds at the actual workspace target directory and align compatible demo/smoke cache profiles.
  • Fix the three desktop Clippy errors and enforce its result.

Validation:

  • 16 focused provenance, pin-classification and workflow-policy tests passed.
  • actionlint 1.7.12 passed on all 12 changed/new workflows (shellcheck/pyflakes were unavailable).
  • Workflow/container/release-evidence policy checks, Rust formatting and diff checks passed.
  • Published tree matches the validated local tree; DCO trailers match the authenticated author.
  • Full GitHub Docker and desktop validation is running. Local Docker and desktop system dependencies are unavailable.

Baseline on #1931/#1932: each had 31 successful checks and 3 intentional skips. The independent engine build + scan took 22m10s / 20m33s in addition to enterprise composition's 34m55s / 27m50s. Actual cleanup savings are not yet measured.

This slice conservatively runs the full enterprise composition on every Security Assurance invocation. Component selection and fast-PR/full-platform separation remain TAN-843 follow-ups; no runtime, isolation, approval, migration or advisory suite was removed. The engine scan now waits for the shared producer, so reduced runner work does not necessarily shorten the critical path. Repository branch protection was not edited; Security Assurance Result is available to require.

Review follow-up: CodeQL flagged a pathname check/read race in the new candidate verifier. Commit c6b218820e1e1da712989af992d5048fceb98858 opens with O_NOFOLLOW, checks the opened descriptor and reads through that same descriptor. All 16 focused tests pass, including symlink rejection. The published tree again matches the validated local tree. New-head full CI and CodeQL confirmation are pending; no scanner suppression was added.

Review triage — 2026-09-05:

  • DCO complaint: false positive. Published 24203558 includes the authenticated author's matching sign-off. The DCO gate passed. No history rewrite is needed.
  • Schema-only test trigger: valid, fixed. A dedicated Solution Contract workflow watches specs/solutions/**, crate/dependency changes and its own configuration. It runs the existing contract suite once; the duplicate explicit invocations in Engine CI's OS matrix are removed. Schema-only edits do not need the full engine matrix to exercise schema drift.
  • Request-supplied network metadata: valid planning-contract gap, fixed. Requests now contain opaque model-binding IDs. The resolver obtains provider/model/credential/network properties only from a host-approved registry scoped to the verified caller; unknown/revoked references and inline request metadata fail. The lock includes the selected ID and approved metadata. Resolver version is 1.0.1. This is not a demonstrated live runtime bypass: the installer/runtime adapter remains unimplemented.

The request-metadata regression was observed failing before the fix and passing afterwards. All 19 solution contract tests, all-targets crate Clippy, the offline fixture, workflow policy, actionlint and formatting pass locally. Foundation fix: db308347; imported into cleanup by cee502a1. Both published trees match their locally validated trees. New-head CI is running; earlier green checks do not establish new-head completion.

tacshade and others added 6 commits September 5, 2026 00:15
Includes draft CI corrections and preserves the original published branch.

Co-authored-by: Codex <codex@openai.com>
Signed-off-by: TacShade <198919272+tacshade@users.noreply.github.com>
Signed-off-by: Codex <codex@openai.com>
Preserve stable Rust hex decoding, remove the unused presentation dependency, update vulnerable and yanked lockfile packages, and pin patched OpenSSL runtime packages without weakening audit gates.

Co-authored-by: Codex <codex@openai.com>
Signed-off-by: TacShade <198919272+tacshade@users.noreply.github.com>
Signed-off-by: Codex <codex@openai.com>
Require the reviewed Debian and security snapshot plus all exact OpenSSL package pins. Preserve digest, inventory, privilege and vulnerability checks.

Co-authored-by: Codex <codex@openai.com>
Signed-off-by: TacShade <198919272+tacshade@users.noreply.github.com>
Signed-off-by: Codex <codex@openai.com>
Replace the old Node 24.18.0 image with the official multi-architecture Node 24.20.0 trixie-slim digest in runtime and migration services. Update policy and provenance together, retaining both vulnerability scanners.

Co-authored-by: Codex <codex@openai.com>
Signed-off-by: TacShade <198919272+tacshade@users.noreply.github.com>
Signed-off-by: Codex <codex@openai.com>
Compare engine version and binary digest instead of all Dockerfile edits, keeping candidate and tagged-release checksum verification intact. Fix two current-stable server lints, add fail-closed pin-scope regressions, and cancel superseded runs only for pull requests.

Co-authored-by: Codex <codex@openai.com>
Signed-off-by: TacShade <198919272+tacshade@users.noreply.github.com>
Signed-off-by: Codex <codex@openai.com>
…ates

TAN-843: remove the duplicate release build, verify same-run candidate provenance before container scanning, pin quality toolchains, align Cargo caches, and fix the three desktop lints hidden by the non-enforcing fallback.

Co-authored-by: Codex <codex@openai.com>

Signed-off-by: TacShade <198919272+tacshade@users.noreply.github.com>
Signed-off-by: Codex <codex@openai.com>
@linear-code

linear-code Bot commented Sep 5, 2026

Copy link
Copy Markdown

TAN-843

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 5, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-05T04:53:57.706427Z 2420355 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Comment thread scripts/ci-release-candidate.mjs Fixed
Address CodeQL file-race review #55 by opening without following symlinks, inspecting the opened descriptor, and hashing bytes through that same descriptor.

Co-authored-by: Codex <codex@openai.com>

Signed-off-by: TacShade <198919272+tacshade@users.noreply.github.com>
Signed-off-by: Codex <codex@openai.com>
@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

❌ AI Evaluation Gate Failed

Critical path: ❌ no results produced (build or eval run failed — see job logs)
Tenant isolation: ❌ no results produced (build or eval run failed — see job logs)
Action Firewall: ❌ no results produced (build or eval run failed — see job logs)
Cross-user memory isolation: ❌ no results produced (build or eval run failed — see job logs)
Agentic product authoring: ❌ no results produced (build or eval run failed — see job logs)

See artifacts for detailed results.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 242035586c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread CONTRIBUTING.md
Comment thread .github/workflows/engine-ci.yml Outdated
Comment thread crates/tandem-solutions/src/resolve.rs
Require opaque model binding IDs in install requests and source provider, credential and network metadata from the host-approved registry. Lock the selected binding ID and metadata, reject unapproved or inline client metadata, and run the focused contract workflow for schema-only edits.

Co-authored-by: Codex <codex@openai.com>

Signed-off-by: TacShade <198919272+tacshade@users.noreply.github.com>
Signed-off-by: Codex <codex@openai.com>
@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📊 AI Evaluation Results

Critical path: 100.0% (5/5)
Tenant isolation: 100.0% (10/10)
Action Firewall: 100.0% (7/7)
Cross-user memory isolation: 100.0% (6/6)
Agentic product authoring: 100.0% (11/11)

See artifacts for detailed results.

Carry the host-approved model-binding contract and focused schema-triggered contract workflow from the foundation PR into TAN-843 without rewriting published history.

Co-authored-by: Codex <codex@openai.com>

Signed-off-by: TacShade <198919272+tacshade@users.noreply.github.com>
Signed-off-by: Codex <codex@openai.com>
@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📊 AI Evaluation Results

Critical path: 100.0% (5/5)
Tenant isolation: 100.0% (10/10)
Action Firewall: 100.0% (7/7)
Cross-user memory isolation: 100.0% (6/6)
Agentic product authoring: 100.0% (11/11)

See artifacts for detailed results.

@tacshade
tacshade merged commit a275f9d into main Sep 5, 2026
36 checks passed
@tacshade
tacshade deleted the codex/tan-843-ci-cleanup branch September 5, 2026 06:19
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.

2 participants