Skip to content

Record exact versions for bundled deploy packages#280

Merged
miyaontherelay merged 7 commits into
mainfrom
codex/issue-279-bundle-versions
Jul 17, 2026
Merged

Record exact versions for bundled deploy packages#280
miyaontherelay merged 7 commits into
mainfrom
codex/issue-279-bundle-versions

Conversation

@miyaontherelay

@miyaontherelay miyaontherelay commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Closes #279.

Summary

  • derive a deterministic package-version manifest from esbuild inputs that actually contribute bytes to agent.bundle.mjs
  • preserve duplicate package versions, pnpm/workspace symlink resolution, and the exact external runtime pin
  • expose the path-free manifest through generated package.json and structured runner.started evidence
  • validate contributing dependency metadata as a valid npm package name plus canonical exact SemVer, including prerelease/build metadata
  • fail closed on ranges, locators, protocols, paths, whitespace/control characters, and invalid dependency metadata without echoing unsafe values
  • exclude the private author/consumer entry owner by canonical package root before dependency metadata validation

Iteration 4 repair

  • repaired WF279-CODEX-INDEPENDENT-001 in 72984a4b3e1df7e8947dfc278f24b069d219dfc6
  • current conflict-free head after integrating main: 6f6e764f9efb2ff1199b407a87069387202736ca
  • red real-esbuild regression: a private consumer with no version failed staging before the fix even though only valid safe-dep@1.2.3 contributed dependency bytes
  • green consumer matrix covers absent package JSON, missing version, workspace:*, invalid name, nested workspaces, and a supported entry outside the consumer package
  • focused real-esbuild ownership/security suite: 11 passed
  • full deploy suite: 242 passed
  • runtime runner suite: 14 passed
  • workspace build, lint, typecheck, and git diff --check passed
  • real installed delivery relay graph remained byte-deterministic and path-free with adapter-core@0.5.6, adapter-linear@0.4.6, relay-helpers@0.4.7, and sdk@0.7.40

The earlier fail-closed security repair is preserved: contributing metadata-less/malformed workspace symlink targets still reject at their canonical dependency root and cannot climb into the consumer or an unrelated ancestor. Unsafe name/version matrices, tree-shaken controls, duplicate versions, cloud/sandbox transport, and exact runner.started manifest parity remain green.

Exact red/green commands and evidence are recorded in .workflow-artifacts/release-propagation-279/iteration-4/fix-report.md.

This PR remains draft. No publish, deploy, release, or production mutation was performed.

@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@miyaontherelay, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 46 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 08962fe0-501d-45d4-a4e8-769eedde6b93

📥 Commits

Reviewing files that changed from the base of the PR and between e1f60c4 and 29dcfb2.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (18)
  • .workflow-artifacts/release-propagation-279/iteration-1/codex-shadow-review.md
  • .workflow-artifacts/release-propagation-279/iteration-1/implementation.md
  • .workflow-artifacts/release-propagation-279/iteration-1/preflight.md
  • .workflow-artifacts/release-propagation-279/iteration-1/review-fix-report.md
  • .workflow-artifacts/release-propagation-279/iteration-2/codex-review.md
  • .workflow-artifacts/release-propagation-279/iteration-2/fix-report.md
  • .workflow-artifacts/release-propagation-279/iteration-4/codex-independent-review.md
  • .workflow-artifacts/release-propagation-279/iteration-4/fix-report.md
  • README.md
  • packages/deploy/CHANGELOG.md
  • packages/deploy/package.json
  • packages/deploy/src/bundle.test.ts
  • packages/deploy/src/bundle.ts
  • packages/deploy/src/modes/cloud.test.ts
  • packages/deploy/src/modes/sandbox-client.test.ts
  • packages/runtime/CHANGELOG.md
  • packages/runtime/src/runner.test.ts
  • packages/runtime/src/runner.ts
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/issue-279-bundle-versions

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@gemini-code-assist gemini-code-assist 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.

Code Review

This pull request implements workforce #279, which records and surfaces the exact versions of packages bundled into agent.bundle.mjs. The bundleStager now utilizes esbuild's metafile to derive a deterministic, path-free bundleManifest in the generated package.json. This manifest is also read by the runner and emitted during startup in the structured runner.started log. Comprehensive tests have been added to verify correct manifest generation, symlink resolution, duplicate package handling, and preservation across cloud and sandbox environments. No review comments were provided, so there is no additional feedback to address.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

@miyaontherelay
miyaontherelay marked this pull request as ready for review July 17, 2026 10:51
@miyaontherelay
miyaontherelay marked this pull request as ready for review July 17, 2026 10:51
@miyaontherelay
miyaontherelay merged commit 8e2679d into main Jul 17, 2026
3 checks passed
@miyaontherelay
miyaontherelay deleted the codex/issue-279-bundle-versions branch July 17, 2026 10:53
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.

deploy bundles @relayfile/* into agent.bundle.mjs but records no versions: no way to tell what a deployed agent is running

1 participant