Skip to content

fix(sdk): qualify LLVM scans and seed shared CI cache - #65

Merged
zoeyrose merged 8 commits into
mainfrom
fix/llvm-sdk-local-qualification-ci
Oct 14, 2026
Merged

zoeyrose merged 8 commits into
mainfrom
fix/llvm-sdk-local-qualification-ci

Conversation

@zoeyrose

@zoeyrose zoeyrose commented Oct 14, 2026 •

Copy link
Copy Markdown
Member

Summary

The LLVM SDK scanner cannot start with its existing local logging configuration: compression defaults to enabled and cannot be combined with one retained log file. Local execution reproduces the rejection. Its failure receipts also need reliable startup evidence and the daemon's actual fixed HTTP error code. Separately, expensive shared LLVM builds have no reusable default-branch Actions cache, so new PRs repeat the cold build.

Implementation / behavior

  • Explicitly disable compression for the scanner's bounded 128 MiB, single-file local log and fence the exact configuration before execution and cleanup.
  • Use schema-2 filesystem receipts to reconcile startup evidence after cleanup. An accepted start or complete owned-container fence can prove execution; an unresolved start attempt records null. Acquisition remains schema 1 with an unstarted container. Recovery observations cannot grant successful qualification.
  • Retain bounded, validated failure stages, exit status, the actual docker-request-denied HTTP code and known errno names while excluding raw response bodies, stderr, paths and exception text. Preserve immutable image, source, mount, ownership, filesystem equality and cleanup checks.
  • Preserve the original fixed qualification error in failure.reason when cleanup fails independently. Missing-container lookups remain failed cleanup; they cannot certify removal after a potentially unresolved create.
  • Seed the shared LLVM cache on trusted main pushes that change its inputs. Keep required PR image validation, native Windows tests, existing cache scopes and two-job hosted compiler limits intact.
  • Synchronize the collector's test path filters and SDK guidance.

The Moby local driver defaults and configuration validation corroborate the reproduced startup rejection. GitHub documents cache access restrictions across PR merge refs and release tags.

Validation

All 386 integrated source tests pass (320 tools, 66 portable), along with actionlint, required-check aggregation, changed Python compilation, signatures and diff checks. The full suites also pass under ordinary and isolated Python. Regressions exercise the real Docker request path with a mocked connection: lost startup responses followed by fenced running or exited states, unresolved or drifted observations, cleanup failures, actual 403/500 responses for create/start/wait/logs, and create failures followed by missing, denied, malformed, foreign or fully fenced owned lookups. Private response text is never retained. Scanner fixtures also prove invalid execution boundaries are rejected before filesystem access. Root self-review and independent integrated source review are clear. Paired local containers reproduce startup failure with default compression and successful startup with compression disabled; the older cached diagnostic SDK then correctly rejects its missing current build-tool receipt.

  • Built and validated the portable, slim Classic and broad Linux images locally with one shared LLVM compilation. The portable production-input closure matches the final PR; slim and broad validation ran from its frozen source.
  • The actual portable candidate passes smoke tests, public TLS verification and the unrelated-CA negative control, and the offline current Classic consumer's builds, ABI checks and tests. The final scanner runs successfully as nonroot with a read-only filesystem and networking disabled, verifying seven metadata files, three build tools, all twelve LLVM roles and complete license inventories.
  • Slim Classic passes client/server builds, unit tests, LLVM coverage and warm compiler-cache checks. Both slim and broad pass the canonical curl cancellation and public TLS probes. Broad passes the current Classic client/server checks after the unmodified pinned project shader preparation that the workspace build wrapper performs automatically.

Required hosted image/native validation and current-head Codex code and security reviews must pass before merge.

Limitations / follow-up

The old hosted receipt retained an opaque filesystem-qualification failure; the local experiment establishes a concrete compatibility defect without identifying that historical run's exact failing phase. Local builds do not establish equality with the immutable released image. After merge, collect the fixed released 1.22.0 SDK on hosted CI and require successful acquisition, filesystem equality and owned cleanup before adopting wrapper pins.

Local validation is headless; the portable consumer explicitly skips 24 GPU tests. It supplies no physical-GPU, audible-gameplay or native-Windows result. Bare CMake in the broad image needs project shader preparation; the supported workspace wrapper supplies it. An older Classic fixture failed separately because it omitted an LLVM CMake module; the additional broad check uses the unmodified current Classic source where that fixture is already fixed.

The first PR can still build LLVM cold before main has seeded its cache. Changed inputs and cache eviction can also require rebuilding; no measured hosted speedup is claimed yet. This is the single consolidated devcontainer follow-up requested for local validation and CI acceleration.

@github-actions

Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or license issues found.

Scanned Files

None

Copy link
Copy Markdown
Member Author

@codex review

Please review current commit 57bd822a5a4cd61e8e9c64587ff2f6d092308ae0, including the scanner startup/logging and bounded failure evidence, unchanged filesystem/isolation gates, and trusted default-branch LLVM cache seeding. Integrated source checks and independent review pass; all three Linux candidates were built and qualified locally as described in the PR. Hosted required checks remain in progress.

Copy link
Copy Markdown
Member Author

@codex security review

Please review current commit 57bd822a5a4cd61e8e9c64587ff2f6d092308ae0, concentrating on Docker scanner start/execution claims, strict bounded diagnostics without raw logs, immutable image/source and filesystem fences, cleanup identity, and trusted main cache seeding. Preserve the separate released-image qualification gate; local candidates are not inventory-adoption evidence.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 14, 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-10-14T04:51:25.326116Z ea2a145 Draft marked ready
🔒 Security Review ✅ Completed 2026-10-14T04:52:28.074046Z ea2a145 Draft marked ready
ℹ️ 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.

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: 57bd822a5a

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

@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: 57bd822a5a

ℹ️ 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 tools/collect-released-sdk-metadata.py

Copy link
Copy Markdown
Member Author

@codex review

Please review the current commit 5c66bdc3c786f311c833a6d1e036528e2aa280d5. The signed append explicitly models isolated Python in the scanner fixture and adds rejection controls for non-isolated execution, root UID and extra arguments before filesystem access. Production scanner/collector and all 92 image production/validation inputs are unchanged. All 378 source tests and both ordinary/isolated tools suites pass; independent cumulative source, reader and local-evidence review is clear.

Copy link
Copy Markdown
Member Author

@codex security review

Please review current commit 5c66bdc3c786f311c833a6d1e036528e2aa280d5. The test-only append preserves the production isolated/nonroot/argument boundary and proves invalid execution is rejected before filesystem access. Review the cumulative scanner logging/start marker, closed diagnostics, image/source/filesystem and cleanup fences, and trusted main cache seeding. The separate exact released-image qualification and adoption gates remain intact.

@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: 5c66bdc3c7

ℹ️ 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 tools/collect-released-sdk-metadata.py Outdated
@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: 5c66bdc3c7

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

(cherry picked from commit e179eac9d2d83bc7f4da28a48ced7acab8d42fb3)
(cherry picked from commit 97b0984486963a8c58b193e8f6eded6d123fbb11)

Copy link
Copy Markdown
Member Author

@codex review

Please review current commit 643cc1edee99f38747703e21f75bea76bc5393c2. Both earlier findings are fixed: schema-2 startup evidence reconciles complete fenced cleanup observations and preserves unknown attempted starts; actual Docker HTTP rejections retain docker-request-denied. Real request-path regressions cover lost responses, running/fast exit, drift, cleanup failure and 403/500 at create/start/wait/logs without reading private response bodies. All 384 source tests, the strict artifact-reader checks and independent integrated review pass. Image production/validation inputs remain unchanged.

Copy link
Copy Markdown
Member Author

@codex security review

Please review current commit 643cc1edee99f38747703e21f75bea76bc5393c2, including both addressed findings. Confirm tri-state startup evidence after cleanup cannot grant qualification, only complete ownership/image/isolation fences certify observed startup, unresolved attempts remain unknown, and real HTTP error diagnostics exclude response bodies and paths. Accepted start, completed scan/equality, source/image fences and successful owned cleanup remain mandatory; actual released-image qualification and wrapper adoption remain separate.

@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: 643cc1edee

ℹ️ 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 tools/collect-released-sdk-metadata.py Outdated
@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: 643cc1edee

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

(cherry picked from commit b8b3aea6b05a30bf3971610c8c111e8d37554804)

Copy link
Copy Markdown
Member Author

@codex review

Please review current commit ea2a14597ea674a7b70b8478ef1a80c26078853c. The latest finding is fixed by retaining the original sanitized code in failure.reason when cleanup fails independently; authoritative cleanup failure/removal false remain intact. Actual create-response/lookup regressions cover 403/500/lost response with missing, denied, malformed, foreign or fully fenced owned lookups. A 404 never certifies absence after a potentially unfinished create. All 386 source tests, strict artifact-reader checks and independent cumulative review pass; prior local image qualification remains valid by unchanged production/validation inputs.

Copy link
Copy Markdown
Member Author

@codex security review

Please review current commit ea2a14597ea674a7b70b8478ef1a80c26078853c. The new fixed failure.reason preserves primary diagnostics when cleanup fails, without treating 404 as absence authority or changing acquisition/cleanup/HTTP/fence behavior. Recheck the cumulative schema-2 tri-state start reconciliation, closed diagnostics, immutable source/image/filesystem gates and trusted main cache seeding. Successful qualification still requires accepted startup, complete equality and owned cleanup; no local candidate is adopted as released-image evidence.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep it up!

Reviewed commit: ea2a14597e

ℹ️ 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".

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: ea2a14597e

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

@zoeyrose
zoeyrose marked this pull request as ready for review October 14, 2026 04:48
@zoeyrose
zoeyrose merged commit 4b68b68 into main Oct 14, 2026
20 checks passed
@zoeyrose
zoeyrose deleted the fix/llvm-sdk-local-qualification-ci branch October 14, 2026 04:53
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.26.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

zoeyrose added a commit to atrinik/atrinik that referenced this pull request Oct 14, 2026
## Summary

Switch Classic workspace compilation, package inspection and coverage
tooling to LLVM 23.1.3 and the LLVM-MinGW UCRT SDK. Portable exports
select the authenticated SDK 1.22.0 producer for Classic revision
`bd5317a03cdc82f029105c5dc26428b09fcd54b3`.

## Implementation / behavior

- Fingerprint compiler, linker, archive utilities and runtime libraries
so changed tool bytes invalidate cached builds. Use LLVM inspection for
ELF and Windows packages and synchronize worker contracts with the
released SDKs.
- Freeze authenticated compiler evidence in the same operation's
context. Rehash all ten LLVM executables and both runtime archives
around prefix/fingerprint probes, configure, build, output capture,
runtime inspection and publication. Refreshed installed metadata must
equal the caller's frozen evidence.
- Admit producer-authenticated CMake, Ninja and pkgconf bytes from
protected paths before probing their versions. Recheck identities around
tool execution. Bind the shader helper's observed host Python separately
from target Python and scrub compiler-probe and packaging environments.
- Authenticate the fixed producer's measured `/bin/sh` chain and
executable before host probes. Hold no-follow descriptors through
bounded hashing and pathname checks, then retain and revalidate the
shell's identity through build and export. This separate receipt
preserves `installed.json`'s three build-tool records and the seven SDK
metadata files.
- Obtain shell literals from [created-only collector run
38525579823](https://github.com/atrinik/atrinik/actions/runs/38525579823),
using SDK #65's reviewed immutable host dependency. The collector never
starts the image and verifies removal of its own container.
- Preserve canonical managed-source identity and complete validated
metadata in configure fingerprints. Retain source ownership, authority
and CAS checks. Reject drifting local Windows producers and retain the
supported Docker route when prerequisites are absent. Public `linux
verify` remains a byte/layout verifier after relocation without the
producer inspector.
- Adopt immutable image/platform/producer/consumer coordinates, seven
metadata hashes and three complete inventory digests from [SDK collector
run
38513888428](https://github.com/atrinik/devcontainer/actions/runs/38513888428).
Preserve all Pulse derivative input, size, edit-span, output and ELF
checks.
- Refresh CI scheduling weights from hosted timings while preserving all
tests, three complete shards and deadlines. Retain the actual masked
dependency-review job summary as an artifact for current-head
inspection. Synchronize contributor and execution guidance.

The broad Linux and general Windows pins already provide LLVM 23.1.3.
Existing optimization settings, GNU bootstrap/distribution libraries and
the replacement Rust/Go profile retain their contracts.

## Validation

The preceding integrated implementation ran 2,391 native tests: 2,371
passed and 20 prerequisite cases skipped, with 86% coverage. The final
integrated changes ran 176 native tests: 172 passed and four skipped
(two ELF prerequisites and two exact SDK-composition cases separately
exercised by the successful hosted collector). These include real
compiler/shell byte, link and mode changes across build phases,
immutable-context controls, receipt propagation, platform refusal and
the retained-advance consumer regression. Manifest, guidance inventory,
142 in-memory Python compiles, actionlint with the explicit Ubuntu 26.04
label configuration, signatures and whitespace checks pass. Root
self-review and independent review of the exact signed integrated source
are clear.

SDK [#65](atrinik/devcontainer#65) is merged
after current-head CI and manual/automatic code and security reviews.
Its local portable, slim and broad Linux qualification passed. The fixed
released SDK's four collector jobs pass; independent replay verifies the
retained artifact, source bindings, metadata, compiler/runtime roles,
inventory maps, hosted filesystem equality and owned cleanup. The actual
shell collector and its independent artifact review pass.

The preceding wrapper head's actual portable export and relocation
passed. Those results are interim evidence: the new head's complete
hosted Integration, Windows, portable export/relocation and
manual/automatic Codex reviews must pass before merge.

## Limitations / follow-up

Collector evidence establishes installed identity under trusted hosted
filesystem equality. Its `final_portable_cohort` remains false.
Executable checks do not attest transitive OS loaders, libraries,
modules or historical execution against privileged swap-and-restore. The
shell's single-hardlink requirement is a runtime safety precondition;
the final hosted export must confirm it in the actual fixed SDK.

Current-head portable acceptance must exercise Pulse bytes and
derivative output, complete ELF closure, released sound decodes and
relocation with original producer inputs unavailable. Physical Linux GPU
qualification belongs to the user's Linux PC; audible playback and
human-approved visual results remain separate. After this PR merges,
publish synchronized guidance in the provider repository and update the
root's full-commit provider pin.
zoeyrose added a commit to atrinik/atrinik that referenced this pull request Oct 14, 2026
## Summary

Finish the LLVM workspace integration and prevent the final test shard
from timing out during cleanup. Pin [provider PR
#4](atrinik/agent-integrations#4), carry its
dependency-report retention repair into the workspace, and rebalance
validation using complete hosted test timings. This follows [workspace
PR #647](#647) and [SDK PR
#65](atrinik/devcontainer#65).

## Implementation / behavior

- Pin the provider's verified squash commit,
`daa3073dda60b842ca50af98129ea8945447cae5`. Its reviewed guidance covers
LLVM 23.1.3, the authenticated SDK 1.22.0 cohort, compiler evidence,
shell requirements and Classic qualification boundaries. Provider main
CI passes after the merge.
- Retain oversized dependency reports for seven days through genuine
runner-masked summaries. Validate complete lines, ordering and capacity
before assembling masked parts. Incomplete or unsupported reports
produce an unknown result. Preserve action pins, permissions and
advisory policy.
- Refresh 220 test weights from all three hosted timing reports,
retaining estimates for shorter or conditionally skipped tests and
existing fallback weights. Preserve all 2,480 discovered cases and
deterministic, disjoint partitioning. Increase only the test-shard
timeout from 15 to 20 minutes to cover setup, evidence upload and
cleanup.

## Validation

Full hosted discovery verifies all 2,480 cases exactly once: 2,460
passed and 20 were skipped. Combined coverage is 86%, with branch
tracking enabled. Integration, native Windows smoke, portable build and
relocation, CodeQL and the current dependency review pass. The new
portable artifact is bound to this exact commit and independently
accepted within its documented scope.

The provider/report integration passes 49 focused tests with zero skips;
the scheduling repair passes 17 focused tests. Manifest and guidance
validation, Python compilation, changed-workflow actionlint 1.7.12
without suppressions, whitespace checks, signatures and strict source
cleanliness pass. Guidance remains 16709 bytes under the unchanged
16750-byte limit. Self-review, independent cumulative source/artifact
review, and current-commit manual Codex code/security reviews found no
issues. Automatic reviews after marking ready remain required before
merge.

The earlier 15-minute cancellation supplied diagnostic timings, not
passing acceptance. The fresh run completes all three shards and cleanup
under the new limit. Its longest measured test shard is 849.482 seconds
versus the previous 862.732 seconds: about 13 seconds shorter (1.5%).
The earlier 21% scheduling forecast is not confirmed by this run;
timings vary between hosted runners. Complete validation now succeeds,
including aggregate discovery and coverage.

## Limitations / follow-up

The oversized-report path has synthetic tests and verified runner
semantics; an actual hosted oversized report has not been exercised.
Local full coverage tooling is unavailable. The temporary worktree's
trust check also prevents native coordinator-test discovery, so complete
acceptance remains in hosted CI. Repository-wide actionlint reports an
existing unsupported `ubuntu-26.04` label in an unchanged workflow; the
changed integration workflow passes.

Physical Linux GPU qualification remains user-owned on the user's Linux
PC. Audible playback and human-approved visual results remain separate.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant