Skip to content

feat(cli): generate Microsoft Store PWA packages - #100

Merged
imjlk merged 56 commits into
mainfrom
codex/microsoft-store-package-generation
Jul 19, 2026
Merged

imjlk merged 56 commits into
mainfrom
codex/microsoft-store-package-generation

Conversation

@imjlk

@imjlk imjlk commented Jul 18, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • add a Microsoft Store package-generation command backed by the fixed PWABuilder production endpoint
  • bind generation to submission evidence, pin the hash-verified manifest in the generator request, and keep the PWA URL inside its deployed scope
  • verify every local manifest icon against preflight evidence and verify each deployed icon and the manifest before and after generation
  • stream a bounded ZIP through a private temporary file, reject redirects, unexpected content, truncation, unsafe or ambiguous entries, split-disk metadata, and symlinks, then publish without clobbering
  • publish generation evidence transactionally and preserve recoverable outputs and backups across failure paths
  • record submission, manifest, icon, request, endpoint source-revision, and archive SHA-256 provenance without extracting or accepting the package
  • add starter workflow docs, regression smoke coverage, and a minor @mpgd/cli Sampo changeset

Validation

  • pnpm smoke:cli-microsoft-store-submission
  • pnpm smoke:cli-microsoft-store-package-generation
  • pnpm smoke:cli-microsoft-store-package-acceptance
  • pnpm check
  • pnpm lint
  • pnpm build:packages
  • pnpm build:microsoft-store
  • pnpm smoke:target microsoft-store
  • git diff --check
  • local OpenCodeReview coverage completed for every current branch commit

Sampo release dry-run is intentionally blocked on feature branches because releases are configured for main only; the changeset uses the existing Added syntax.

Boundaries

The remote API and deployed icon URLs are mutable external resources, so evidence marks this as a best-effort external-service contract and pins the reviewed upstream source revision. Before/after probes detect changes but cannot make remote resources content-addressed. Redirects fail closed to preserve exact evidence URL binding. This command only downloads and records the ZIP; package inspection and acceptance remain a separate required stage before Partner Center submission.

Official sources:

Summary by CodeRabbit

  • New Features

    • Added Microsoft Store MSIX package generation via a new CLI action (generate-package microsoft-store).
    • Validates PWA/manifest URL scope, pins verified manifest/icon inputs, generates ZIP packages, and writes inspection-ready evidence and provenance records.
    • Adds stronger safety checks for redirects, archive structure, and integrity during download and publishing.
    • Updated the Phaser template with a streamlined Microsoft Store packaging command.
  • Documentation

    • Expanded Microsoft Store generation and verification guidance, including the two-step preflight → deploy → generate workflow and acceptance-flow upload note.
  • Tests

    • Added a dedicated end-to-end smoke test for Microsoft Store package generation and inserted it into the prepared test chain.

@coderabbitai

coderabbitai Bot commented Jul 18, 2026 •

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

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

Next review available in: 12 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

Run ID: 37f6f0e0-4cef-403c-85d3-048e358c2d6a

📥 Commits

Reviewing files that changed from the base of the PR and between b4e2731 and 43bb5ff.

📒 Files selected for processing (4)
  • .gitignore
  • packages/cli/src/microsoft-store-package-generation-download.ts
  • packages/cli/src/microsoft-store-package-generation.ts
  • tools/smoke/cli-microsoft-store-package-generation.ts
📝 Walkthrough

Walkthrough

Adds Microsoft Store PWA package generation with validated evidence, manifest scope checks, bounded downloads, ZIP safety validation, atomic archive and provenance outputs, CLI wiring, smoke coverage, and updated release guidance.

Changes

Microsoft Store package generation

Layer / File(s) Summary
Input contracts and integrity preparation
packages/cli/src/microsoft-store-package-generation-contract.ts, packages/cli/src/microsoft-store-package-generation-input.ts, packages/cli/src/microsoft-store-package-generation-integrity.ts, packages/cli/src/microsoft-store-package-generation-manifest.ts
Defines typed inputs and evidence, validates manifests, icons, URLs, versions, scopes, paths, aliases, and file snapshots.
Archive download and ZIP validation
packages/cli/src/microsoft-store-package-generation-download.ts, packages/cli/src/microsoft-store-package-generation-zip.ts
Resolves public addresses, verifies deployed resources, downloads bounded archives, checks hashes and content types, publishes atomically, and rejects unsafe ZIP structures.
Generation orchestration and CLI entry point
packages/cli/src/microsoft-store-package-generation.ts, packages/cli/src/index.ts, packages/cli/package.json
Builds generator requests, writes transactional JSON and Markdown evidence, exports runtime helpers, adds the target generate-package microsoft-store command, and adds undici.
End-to-end smoke validation
tools/smoke/cli-microsoft-store-package-generation.ts, package.json
Adds fixture-based success and failure coverage for integrity, scope, responses, ZIPs, mutations, paths, races, and cleanup.
Template, release, and usage guidance
README.md, docs/PUBLIC_RELEASE_CHECKLIST.md, packages/cli/templates/phaser-game/*, .sampo/changesets/microsoft-store-package-generation.md
Documents the workflow, updates release steps, adds the template packaging command and ignored input directory, and records the CLI minor release.

Estimated code review effort: 5 (Critical) | ~90 minutes

Sequence Diagram(s)

sequenceDiagram
  participant CLI
  participant Filesystem
  participant PWA
  participant Generator
  CLI->>Filesystem: Read submission evidence and pinned assets
  CLI->>PWA: Verify manifest and icon hashes
  CLI->>Generator: POST package-generation request
  Generator-->>CLI: Return ZIP archive
  CLI->>Filesystem: Validate and atomically write ZIP and provenance
Loading

Possibly related PRs

Poem

A bunny checks each hash in line,
Then guards the ZIP from paths malign.
The manifest stays within its scope,
Evidence records every hop.
“Package safely!” thumps my shoe.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: adding Microsoft Store PWA package generation to the CLI.
Description check ✅ Passed The description covers Summary and Validation thoroughly; the template's Notes section is missing, but the PR still mostly matches the required structure.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/microsoft-store-package-generation

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.

@imjlk

imjlk commented Jul 18, 2026

Copy link
Copy Markdown
Owner Author

@codex review exact head b5a64d7

@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: b5a64d7f0f

ℹ️ 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 packages/cli/src/index.ts Resolved
@imjlk
imjlk force-pushed the codex/microsoft-store-package-generation branch from b5a64d7 to 8c949a1 Compare July 18, 2026 12:39
@imjlk

imjlk commented Jul 18, 2026

Copy link
Copy Markdown
Owner Author

@codex review exact head 8c949a1

@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: 8c949a14fc

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

@imjlk

imjlk commented Jul 18, 2026

Copy link
Copy Markdown
Owner Author

@codex review exact head e473c00

@coderabbitai coderabbitai 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.

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/cli/src/microsoft-store-package-generation-download.ts`:
- Around line 134-140: Replace the existsSync check followed by renameSync in
the package publication flow with an atomic no-clobber operation, such as
creating a hard link from temporaryFile to input.outputFile. Preserve the
new-output contract by handling an EEXIST failure as the existing-output error,
and remove the racy pre-check.

In `@packages/cli/src/microsoft-store-package-generation-input.ts`:
- Around line 34-38: Update the submission evidence flow around
hashMicrosoftStoreFileSnapshot and readSubmissionEvidence so the exact bytes
represented by submissionBefore are validated before parsing, following the
manifest reader’s validation pattern. Ensure submissionEvidence and
submissionEvidenceSha256 are derived from the same verified source bytes,
including the corresponding later flow noted in the comment.

In `@packages/cli/src/microsoft-store-package-generation-zip.ts`:
- Around line 87-108: Update the local-header validation near localHeaderOffset
to read the complete 30-byte fixed header, then read its filename using the
local header’s filename length and run assertSafeZipEntryName on it. Require the
raw local filename bytes to exactly match fileNameBytes from the central
directory, rejecting mismatches before continuing while preserving the existing
signature and offset checks.

In `@tools/smoke/cli-microsoft-store-package-generation.ts`:
- Line 13: Update the temporary-archive assertion in the Microsoft Store package
generation smoke test to use the imported path basename utility instead of
splitting outputFile on '/'. Preserve the existing archive-name validation while
making it work with both Windows and POSIX paths.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a4d5237c-4b10-45d5-ab63-d219ae541ed8

📥 Commits

Reviewing files that changed from the base of the PR and between 2c5046a and e473c00.

📒 Files selected for processing (16)
  • .sampo/changesets/microsoft-store-package-generation.md
  • README.md
  • docs/PUBLIC_RELEASE_CHECKLIST.md
  • package.json
  • packages/cli/src/index.ts
  • packages/cli/src/microsoft-store-package-generation-contract.ts
  • packages/cli/src/microsoft-store-package-generation-download.ts
  • packages/cli/src/microsoft-store-package-generation-input.ts
  • packages/cli/src/microsoft-store-package-generation-integrity.ts
  • packages/cli/src/microsoft-store-package-generation-manifest.ts
  • packages/cli/src/microsoft-store-package-generation-zip.ts
  • packages/cli/src/microsoft-store-package-generation.ts
  • packages/cli/templates/phaser-game/README.md
  • packages/cli/templates/phaser-game/gitignore
  • packages/cli/templates/phaser-game/package.json
  • tools/smoke/cli-microsoft-store-package-generation.ts

@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: e473c008b4

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

@imjlk

imjlk commented Jul 18, 2026

Copy link
Copy Markdown
Owner Author

@codex review exact head 13781ab

@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: 13781abf12

ℹ️ 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 README.md Resolved

@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: 3a5a4b60de

ℹ️ 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 packages/cli/src/index.ts Resolved
@imjlk

imjlk commented Jul 18, 2026

Copy link
Copy Markdown
Owner Author

@codex review the exact current head cf5c330. Please review the complete PR at this SHA, including the public-only DNS-pinned fetch boundary, transactional evidence writes, the --package-version CLI path, and repeated manifest-icon file reuse. Report every actionable finding; if none remain, mark this exact head clean.

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/cli/src/index.ts (1)

1206-1231: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Ensure output directories exist before writing generation artifacts.

Unlike the preflight and accept-package commands, this subcommand does not create the outputDir before proceeding. Furthermore, the outputFile resides in an input directory (release-input/microsoft-store) that may not exist on a clean run. Missing directories will likely cause ENOENT errors when writing evidence files or saving the ZIP archive.

Consider extracting outputFile and explicitly creating both directories before calling the generation routine.

🛠️ Proposed fix
         const outputDir = resolveGameRelativePath(
           gameRoot,
           readOptionalString(ctx.values['output-dir']) ?? 'release-output/microsoft-store',
         );
+        const outputFile = resolveGameRelativePath(
+          gameRoot,
+          readOptionalString(ctx.values['output-file']) ?? 'release-input/microsoft-store/pwabuilder-package.zip',
+        );
 
         assertGameOwnedOutputDirectory(gameRoot, outputDir);
+        mkdirSync(outputDir, { recursive: true });
+        mkdirSync(path.dirname(outputFile), { recursive: true });
         resolveMicrosoftStoreArtifactRoot(targetsFile);
         const evidence = await runMicrosoftStorePackageGeneration({
           gameRoot,
           submissionEvidenceFile: resolveGameRelativePath(
             gameRoot,
             readOptionalString(ctx.values['submission-evidence'])
               ?? 'release-output/microsoft-store/submission-preflight.json',
           ),
           pwaUrl: readOptionalString(ctx.values['pwa-url']) ?? '',
           manifestUrl: readOptionalString(ctx.values['manifest-url']) ?? '',
           modernVersion: readOptionalString(ctx.values['package-version']) ?? '',
           classicVersion: readOptionalString(ctx.values['classic-version']) ?? '',
-          outputFile: resolveGameRelativePath(
-            gameRoot,
-            readOptionalString(ctx.values['output-file'])
-              ?? 'release-input/microsoft-store/pwabuilder-package.zip',
-          ),
+          outputFile,
           jsonFile: path.join(outputDir, 'package-generation.json'),
           markdownFile: path.join(outputDir, 'package-generation.md'),
         });
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/cli/src/index.ts` around lines 1206 - 1231, In the Microsoft Store
package-generation flow, update the code around outputDir and
runMicrosoftStorePackageGeneration to resolve the outputFile path once, create
both outputDir and its parent directory recursively before generation, and pass
the resolved outputFile to the routine. Preserve the existing defaults and
artifact paths.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/cli/src/microsoft-store-package-generation-download.ts`:
- Around line 79-85: Update the fetch wrapper around the `undiciFetch` call to
pass the original `input` directly instead of extracting `input.url`, preserving
`Request` properties such as method, headers, and body while retaining the
dispatcher override in `init`.

---

Outside diff comments:
In `@packages/cli/src/index.ts`:
- Around line 1206-1231: In the Microsoft Store package-generation flow, update
the code around outputDir and runMicrosoftStorePackageGeneration to resolve the
outputFile path once, create both outputDir and its parent directory recursively
before generation, and pass the resolved outputFile to the routine. Preserve the
existing defaults and artifact paths.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 4461990e-e55c-47a7-882b-4f4c62faab91

📥 Commits

Reviewing files that changed from the base of the PR and between 7ca9814 and cf5c330.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (10)
  • .sampo/changesets/microsoft-store-package-generation.md
  • README.md
  • packages/cli/package.json
  • packages/cli/src/index.ts
  • packages/cli/src/microsoft-store-package-generation-contract.ts
  • packages/cli/src/microsoft-store-package-generation-download.ts
  • packages/cli/src/microsoft-store-package-generation-input.ts
  • packages/cli/src/microsoft-store-package-generation.ts
  • packages/cli/templates/phaser-game/README.md
  • tools/smoke/cli-microsoft-store-package-generation.ts
🚧 Files skipped from review as they are similar to previous changes (6)
  • .sampo/changesets/microsoft-store-package-generation.md
  • README.md
  • packages/cli/src/microsoft-store-package-generation.ts
  • packages/cli/src/microsoft-store-package-generation-contract.ts
  • packages/cli/src/microsoft-store-package-generation-input.ts
  • tools/smoke/cli-microsoft-store-package-generation.ts

@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: cf5c330b8b

ℹ️ 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 docs/PUBLIC_RELEASE_CHECKLIST.md Resolved
@imjlk

imjlk commented Jul 18, 2026

Copy link
Copy Markdown
Owner Author

Follow-up on the outside-diff clean-run output-directory note from the latest automated review: no patch is needed for that item. The package-generation input preparation resolves the requested ZIP path, rejects an existing target, creates its parent recursively, then canonicalizes the parent and re-checks that it remains inside the game root before the download begins (prepareMissingOutputFile in microsoft-store-package-generation-input.ts). Evidence parents are likewise created before transactional publication. The main success smoke starts without a release-input/microsoft-store directory and passes, and the linked-output regression verifies that a symlinked parent escaping the game root is rejected. This covers both the default clean-run ENOENT case and the parent-symlink boundary.

@imjlk

imjlk commented Jul 18, 2026

Copy link
Copy Markdown
Owner Author

@codex review exact head 7f29cb0. Please re-review the evidence-lock cleanup follow-up and the complete current PR head.

@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: 7f29cb0887

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

@imjlk

imjlk commented Jul 18, 2026

Copy link
Copy Markdown
Owner Author

@codex review exact head 585143e. Please re-review the complete current PR, including inode-free lock ownership and partial lock-initialization cleanup. Report every actionable issue still present on this exact head; if none remain, mark it clean.

@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: 585143e6bc

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

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/cli/src/microsoft-store-package-generation.ts`:
- Around line 254-272: Update the publication loop around the file placement
operations and the corresponding flow at the additional location: immediately
after each successful linkSync or renameSync, record the file’s rollback
ownership identity in publishedIdentity before unlinkSync, lstatSync, or any
other fallible operation. Preserve the existing identity validation,
temporary-file state updates, and rollback behavior, and add fault-injection
coverage for failures after both linkSync and renameSync.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 9b2984f4-c8d1-4fd2-bf33-d1840d6793c5

📥 Commits

Reviewing files that changed from the base of the PR and between cf5c330 and b4e2731.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (5)
  • docs/PUBLIC_RELEASE_CHECKLIST.md
  • package.json
  • packages/cli/src/microsoft-store-package-generation-download.ts
  • packages/cli/src/microsoft-store-package-generation.ts
  • tools/smoke/cli-microsoft-store-package-generation.ts
🚧 Files skipped from review as they are similar to previous changes (2)
  • docs/PUBLIC_RELEASE_CHECKLIST.md
  • packages/cli/src/microsoft-store-package-generation-download.ts

@imjlk

imjlk commented Jul 18, 2026

Copy link
Copy Markdown
Owner Author

@codex review exact head 18a32b7. Please re-review the complete current PR, including inode-free cleanup proofs and immediate rollback ownership after both link and rename evidence placement. Report every actionable issue still present on this exact head; if none remain, mark it clean.

@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: 18a32b70af

ℹ️ 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 packages/cli/src/index.ts Resolved
@imjlk

imjlk commented Jul 18, 2026

Copy link
Copy Markdown
Owner Author

Local OpenCodeReview completed for exact head 43bb5ff (session db152bc8-f48c-4497-b714-87a00dbff7b8): 4 files completed, 0 failed, 0 LLM failures, aborted=false. The sole Low maintainability note asks to remove the icon URL undefined guard. I am retaining it: indexed access remains string-or-undefined under the project TypeScript settings, the explicit guard avoids a non-null assertion, and it preserves fail-closed behavior if this private helper is later passed a sparse or concurrently-derived array. No High or Medium findings remain.

@imjlk

imjlk commented Jul 18, 2026

Copy link
Copy Markdown
Owner Author

@codex review exact head 43bb5ff. Please re-review the complete current PR, including absolute verified manifest icon URLs before request serialization/hash, immediate ZIP rollback ownership after hard-link placement, and repository-level generated package ignore coverage. Report every actionable issue still present on this exact head; if none remain, mark it clean.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Nice work!

Reviewed commit: 43bb5ff6e8

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

@imjlk
imjlk merged commit 3b6e93a into main Jul 19, 2026
6 checks passed
@imjlk
imjlk deleted the codex/microsoft-store-package-generation branch October 27, 2026 11:27
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