Skip to content

fix(release): keep Python inventory stable through packaging#676

Merged
100yenadmin merged 1 commit into
evaos/beta-rc-20260612from
codex/655-python-inventory-packager-fix
Jul 13, 2026
Merged

fix(release): keep Python inventory stable through packaging#676
100yenadmin merged 1 commit into
evaos/beta-rc-20260612from
codex/655-python-inventory-packager-fix

Conversation

@100yenadmin

Copy link
Copy Markdown
Owner

What changed

  • Exclude __pycache__ as a complete path segment while copying the pinned Python runtime into the Workbench bridge resource.
  • Exercise inventory verification through builder-util.copyDir, the same copy implementation Electron Builder uses for extraResources.

Root cause

The v2.1.33 release run correctly failed closed in afterPack. The runtime inventory declared 3,622 entries, including 84 empty __pycache__ directories. The old filter removed bytecode files but still created their parent cache directories. Electron Builder intentionally does not copy empty directories, so the packaged runtime contained 3,538 entries and failed its exact inventory comparison before signing.

This was a packaging-contract defect introduced by the new inventory safeguard. It is not a signing, notarization, broker, Tailscale, Headscale, CUA, Peekaboo, or Mac-control architecture change.

User and release impact

The fix keeps the strong runtime inventory, symlink, mode, hash, architecture, and signed-Mach-O checks intact. It removes disposable Python cache directories before inventory creation so the declared runtime and packaged runtime are identical.

Validation

  • Regression proved red first: expected 10 entries but received 11 because the empty cache directory remained.
  • Focused unit suite: 96/96 passed across after-pack, builder, beta release gate, and bridge-resource tests.
  • Real pinned arm64 runtime: 3,538 entries, zero __pycache__ entries, and inventory verification passed after the actual Builder copy implementation.
  • Prettier and git diff --check passed.
  • Original failed release evidence: https://github.com/100yenadmin/evaOS-GUI/actions/runs/29238215096

This PR does not claim a released, notarized, installed, broker-connected, or customer-ready artifact. Those gates remain after merge and a fresh exact-head release run.

Advances #655 and #623.

@coderabbitai

coderabbitai Bot commented Jul 13, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: b80b8a2b-a6c9-4934-9727-04e1b6fd649a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/655-python-inventory-packager-fix

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

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@evaos-code-review-bot

evaos-code-review-bot Bot commented Jul 13, 2026

Copy link
Copy Markdown

evaOS review status: completed

PR: #676 - fix(release): keep Python inventory stable through packaging
Head: f03b42a53485a16bdd4d1e3a07cf91af919d99c6
Updated: 2026-07-13T09:55:22.591Z

evaOS review completed for this PR head.

Automation note: agents should wait for this comment to reach completed, stale_head, closed_or_merged_before_review, skipped, or failed before treating evaOS review as settled for this head. provider_deferred means evaOS still intends to retry.

PR URL: #676

Review URL: #676 (review)

@100yenadmin

Copy link
Copy Markdown
Owner Author

Exact-head gate and reviewer-set status

Head: f03b42a53485a16bdd4d1e3a07cf91af919d99c6

  • Canonical PR Checks passed on the exact head: https://github.com/100yenadmin/evaOS-GUI/actions/runs/29239285985
  • Workbench Functional Smoke passed after checking out the exact requested head with immutable bridge 9e3b7332a88fbdea22291923bfd10dd37494d92d: https://github.com/100yenadmin/evaOS-GUI/actions/runs/29239317459
  • An independent exact-head adversarial review found no concrete defect at or above 95% confidence. It specifically checked path-segment handling on POSIX/Windows, fs.cpSync pruning before traversal, the exact electron-builder/builder-util copy path, inventory hashes/modes/symlinks, and Mac-control/release invariants.
  • Complete review-thread pagination currently shows zero threads and therefore zero unresolved threads.

Unavailable reviewers are not counted as approvals:

The evaOS review bot is still marked in_progress on this exact head. Merge remains pending its final status or an explicit recorded waiver if it does not complete.

@evaos-code-review-bot evaos-code-review-bot 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.

Walkthrough

PR: #676 - fix(release): keep Python inventory stable through packaging
Head: f03b42a53485a16bdd4d1e3a07cf91af919d99c6 into evaos/beta-rc-20260612. Review event: COMMENT.
Provider: GLM/Z.ai through ZCode (zcode-glm, zcode, model GLM-5.2).

Estimated review effort: 1/5 (~14 min)

Changed Files

File Status Churn Purpose Risk
scripts/prepareEvaosDesktopBridgeResource.js modified +1/-1 Changed file Low
tests/unit/process/prepareEvaosDesktopBridgeResource.test.ts modified +10/-1 Test coverage Low

Review Signal

No validated inline findings.
Dropped findings before posting: 0. High-severity findings: 0.

Risk Taxonomy

No finding categories.

Validation and Proof

1 required validation/proof recommendation(s) selected from changed files.

  • required: TypeScript/web build or CI proof - Runtime TypeScript/web files or package/config files changed. Proof: npm run build; typecheck; focused Vitest; green GitHub check.
    Proof status: missing - 1 required validation/proof recommendation(s) missing from PR metadata.
    Profile validation hints: Do not ask for broad local suites when remote CI or fast-smoke proof is the right gate.
    Profile proof expectations: Look for focused app smoke, packaged resource checks, or CI artifact proof when relevant.

Related Context

Related issues/PRs: #655, #623.
Suggested labels: tests.
Suggested reviewers: none from current metadata.

Review Settings Preview

  • Profile: assertive
  • Enabled sections: Review summary (inline_review); Walkthrough (inline_review); Changed-files table (walkthrough); Effort estimate (walkthrough); Related issues/PRs (walkthrough); Suggested labels (suggestion_only); Review status comment (sticky_status)
  • Path instructions: apps/eva-desktop-mac/** - Check macOS identity, helper path, TCC identity, and packaged resource shape risk.
  • Path instructions: scripts/** - Treat release, packaging, and artifact-shape changes as high risk.
  • Label suggestions: workbench, macos, regression-hardening
  • Reviewer suggestions: none
  • Suggestion behavior: suggestions only; labels and reviewers are not auto-applied.
  • Roadmap-only settings: auto-apply labels; auto-request reviewers; required status checks

Pre-merge checklist

  • Inline comments target current RIGHT-side diff lines.
  • No secret-like content survived into posted inline comments.
  • REQUEST_CHANGES is only used when eligible P0/P1 findings survive validation.
  • Required behavior proof is present or not applicable.
  • Labels and reviewers are suggestions only; the bot did not auto-apply them.

@100yenadmin

Copy link
Copy Markdown
Owner Author

Review proof recommendation satisfied

The evaOS review's behavior-proof recommendation is satisfied for exact head f03b42a53485a16bdd4d1e3a07cf91af919d99c6:

  • canonical PR Checks, including macOS arm64 build/install smoke, unit tests, coverage, code quality, and release-script checks: https://github.com/100yenadmin/evaOS-GUI/actions/runs/29239285985
  • Workbench Functional Smoke, which checked out f03b42a53485a16bdd4d1e3a07cf91af919d99c6, passed after-pack inventory verification, validated the immutable bridge ref, bundled CPython 3.12.13, arm64 identity, launcher symlink, isolated PyObjC imports, and bridge status JSON: https://github.com/100yenadmin/evaOS-GUI/actions/runs/29239317459
  • red-first focused regression and real-runtime Builder-copy parity are documented in the PR body and exact-head gate comment above.

No release, notarization, installed-app, live Mac-control, broker, RC, or customer-readiness claim is made by these pre-merge proofs.

@100yenadmin
100yenadmin merged commit 157c843 into evaos/beta-rc-20260612 Jul 13, 2026
21 checks passed
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.

1 participant