Skip to content

CI: refresh verified app-host product layer format - #13564

Closed
teamleaderleo wants to merge 12 commits into
ci-peer-artifact-sourcefrom
ci-layered-product-format-refresh
Closed

teamleaderleo wants to merge 12 commits into
ci-peer-artifact-sourcefrom
ci-layered-product-format-refresh

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 22, 2026 •

Copy link
Copy Markdown
Collaborator

Supersedes the format/transport foundation from #13201 on the current artifact stack.

Scope

This PR intentionally lands the reusable layer primitives without carrying #13201's stale 1,000+ commit-old CI workflow snapshot.

It adds:

  • Apple Archive/LZFSE aggregate archive helper;
  • canonical four-layer app-host format:
    • app-cli
    • runtime
    • tests
    • diagnostics
  • exact provider-index / layer transport helper;
  • path/link/mode/xattr/content validation;
  • atomic no-replace restore;
  • bounded provider ZIP and layer sizes;
  • exact producer/run/attempt/source/toolchain identity;
  • focused transport and native Apple Archive regression coverage;
  • documentation for the format and transport contract.

Architecture

The layer set is an immutable product decomposition, not four equal-sized chunks and not four automatically-required transfers forever.

This PR keeps the first profile as app-host-full requiring all four layers so the format can land independently of consumer selection. #13365 owns the next step: map each consumer to the minimal required layer set and compose each missing layer with local -> peer -> optional R2 -> GitHub.

Validation

The focused CI artifact transport workflow now runs:

python3 tests/test_app_host_layer_transport.py
python3 tests/test_app_host_layered_products.py
bash tests/test_app_host_products_archive.sh

The native Apple Archive cases skip on Linux and remain available to the macOS lanes.

Stack

Base: #13540 (ci-peer-artifact-source).

After #13540 lands, this PR should be retargeted to main; its diff is limited to the layer format/transport foundation.

Refs #13365 and teamleaderleo/glaeda#1068.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Summary by cubic

Lands the opt-in app-host layered product format on the current artifact stack, reusing the original format/transport foundation instead of #13201's stale workflow snapshot.

The product is decomposed into four immutable layers (app-cli, runtime, tests, diagnostics) packaged as Apple Archives (LZFSE). Consumers fetch layers through exact GitHub artifact IDs; every read verifies producer repository, run/attempt identity, head and source SHAs, toolchain, digest, size caps (index 8 MiB, layer 8 GiB), and zip/member integrity. Assembly happens in a private sibling and only atomically publishes the DerivedData directory on a fully verified restore. Any miss, expiry, or mismatch falls back to the legacy aggregate with the existing destination untouched, and the failure is reported explicitly rather than silently bypassed.

  • The first profile app-host-full requires all four layers; selective per-consumer profiles remain future work.
  • Layer packaging reads the normalized build tree without mutating producer products; unportable symlinks are materialized or dropped by the archive helper.
  • Adds app-host-products-archive.sh helpers, transport/index and layered-product Python modules, format/transport docs, and regression tests wired into the CI artifact transport workflow; native Apple Archive cases skip on Linux.

Written for commit bcbebb4. Summary will update on new commits.

Review in cubic

@coderabbitai

coderabbitai Bot commented Sep 22, 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: Repository: manaflow-ai/cmux/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: f095ab20-08f4-4cdf-9dea-409cedd2350a

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

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.

@cursor

cursor Bot commented Sep 22, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

Copy link
Copy Markdown
Collaborator Author

Superseded by #13576, which carries the verified app-host layer-format work on top of the peer transport now merged to main.

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