Skip to content

Implement perry-container and perry-container-compose modules#1

Open
yumin-chen wants to merge 5 commits intofeat/container-composefrom
perry-container-impl-4808062097019276876
Open

Implement perry-container and perry-container-compose modules#1
yumin-chen wants to merge 5 commits intofeat/container-composefrom
perry-container-impl-4808062097019276876

Conversation

@yumin-chen
Copy link
Copy Markdown

Implement the perry/container and perry/container-compose TypeScript modules backed by a refactored perry-container-compose Rust crate and an expanded perry-stdlib container FFI bridge.

Key changes:

  1. Restructure perry-container-compose: Consolidated backend implementations into a single backend.rs file, implemented ContainerBackend and CliProtocol traits, and added a multi-candidate backend probe sequence with platform-specific prioritization.
  2. Core Orchestration: Implemented Kahn's algorithm in compose.rs for deterministic startup order, and provided full lifecycle management (up, down, start, stop, restart, ps, logs, exec).
  3. YAML and Config: Implemented YAML interpolation, .env loading, and multi-file merging in yaml.rs.
  4. Standard Library Expansion: Added Sigstore/cosign image verification in verification.rs, OCI-isolated sandboxed execution in capability.rs, and updated FFI bindings in mod.rs.
  5. Compiler Integration: Registered the new modules in perry-hir/src/ir.rs to allow native imports from TypeScript.
  6. CLI: Provided a full-featured perry-compose CLI binary.

Verified with comprehensive unit tests and integration tests where applicable.


PR created automatically by Jules for task 4808062097019276876 started by @yumin-chen

@google-labs-jules
Copy link
Copy Markdown

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@yumin-chen yumin-chen force-pushed the feat/container-compose branch 6 times, most recently from 8c07e3a to 5ae75c3 Compare April 15, 2026 17:19
@yumin-chen yumin-chen force-pushed the feat/container-compose branch 4 times, most recently from d0be721 to 093e7a0 Compare April 15, 2026 17:52
@yumin-chen yumin-chen force-pushed the feat/container-compose branch from 093e7a0 to bd88aba Compare April 15, 2026 18:30
@yumin-chen yumin-chen closed this Apr 15, 2026
@yumin-chen yumin-chen force-pushed the perry-container-impl-4808062097019276876 branch from 0c01cf5 to bd88aba Compare April 15, 2026 18:32
@yumin-chen yumin-chen reopened this Apr 15, 2026
@yumin-chen yumin-chen force-pushed the feat/container-compose branch 3 times, most recently from d3d0b0a to 7396c20 Compare April 15, 2026 19:19
@yumin-chen yumin-chen marked this pull request as draft April 15, 2026 19:22
@yumin-chen yumin-chen force-pushed the feat/container-compose branch 3 times, most recently from 1258b4c to bfededb Compare April 15, 2026 22:07
@Chen-Software Chen-Software deleted a comment from google-labs-jules Bot Apr 16, 2026
@Chen-Software Chen-Software deleted a comment from google-labs-jules Bot Apr 16, 2026
@yumin-chen yumin-chen force-pushed the feat/container-compose branch 3 times, most recently from 4b72520 to 4cda64d Compare April 16, 2026 06:46
@Chen-Software Chen-Software deleted a comment from google-labs-jules Bot Apr 16, 2026
@yumin-chen yumin-chen force-pushed the feat/container-compose branch from 247b2b9 to 74af827 Compare April 21, 2026 22:15
yumin-chen added a commit that referenced this pull request Apr 22, 2026
This commit implements the canonical specification v1 for the Perry
container and multi-service orchestration modules, incorporating
feedback from senior review and addressing all identified gaps.

Key improvements:
- Aligned backend selection priority: apple/container is now #1 on Mac.
- Standardised FFI symbols with the `js_container_compose_*` prefix
  and updated codegen dispatch for handle-based orchestration.
- Implemented robust `StringHeader` pointer validation (> 0x1000).
- Explicitly implemented Kahn's algorithm (BFS) for deterministic
  startup ordering and complete cycle reporting.
- Refined resource management in `ComposeEngine::up` to be idempotent
  and ensure rollback only targets session-created resources.
- Enforced image verification (Sigstore/cosign) and strict isolation
  constraints for Shell capabilities.
- Full implementation and codegen wiring of the `build` feature.
- Verified all changes with unit/property tests and clean builds.
@yumin-chen yumin-chen force-pushed the feat/container-compose branch 8 times, most recently from b4136c9 to 16fa0bb Compare April 22, 2026 16:47
@Chen-Software Chen-Software deleted a comment from google-labs-jules Bot Apr 22, 2026
@Chen-Software Chen-Software deleted a comment from google-labs-jules Bot Apr 22, 2026
@yumin-chen yumin-chen force-pushed the feat/container-compose branch 17 times, most recently from 37b3cff to 97bd671 Compare April 23, 2026 13:17
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