feat!: enable remote customer-cloud storage bindings (ALIEN-291) - #156
Open
lilienblum wants to merge 79 commits into
Open
feat!: enable remote customer-cloud storage bindings (ALIEN-291)#156lilienblum wants to merge 79 commits into
lilienblum wants to merge 79 commits into
Conversation
This was referenced Jul 20, 2026
Contributor
Author
|
CI Fast reached and passed lint, TypeScript typecheck, the real bindings addon build, package-layout validation, and the full TypeScript unit suite. It then stopped on the existing ALIEN-291-specific Rust, Node addon, TypeScript, IAM dataset, and generated AWS/GCP/Azure artifact checks are listed in the PR body and pass locally. |
lilienblum
force-pushed
the
lilienblum/alien-291-remote-bindings
branch
from
July 21, 2026 02:09
959ffe4 to
915d152
Compare
@alienplatform/commands ships to npm with a blank package page. Document both halves of the package: sending with CommandsClient (.target scoping, CommandsClientConfig, InvokeOptions) and receiving with createCommandReceiver (environment contract, raw byte handlers, Standard Schema validation, execution budget, at-least-once delivery, drain semantics), plus the exported error set. Every TypeScript sample was extracted from the README and typechecked against the built package types with tsc --noEmit.
lilienblum
force-pushed
the
lilienblum/alien-291-remote-bindings
branch
from
July 24, 2026 04:08
632ac6f to
6956802
Compare
… policies (ALIEN-291) The runtime remote-stack-management controller creates/versions/attaches <stack>-deployment-management-* managed policies onto the <stack>-management role after setup — how a Frozen, remote-access (BYOB) resource grants the management identity access to a bucket whose ARN is only known post-provision. Setup only compiled static grants for Live resources, so these calls 403'd. Grant is scoped to this stack's own deployment-management namespace; attach is fenced by an iam:PolicyARN condition.
Keeps main's tightened nextest filter (which excludes the cloud client and bindings integration tests plus the cloudrun runtime binary) and retains this branch's explicit non-cloud remote bindings unit test step.
Brings the branch up to date with the 22 commits main gained after the
previous merge, including the two resource-gating PRs that rework exactly
the generation paths this branch changes.
Conflicts and how they were resolved:
- .github/workflows/release.yml — kept this branch's step rename ("Set
JavaScript package versions") and took main's new `if: stable_action ==
'prepare' || dry_run` guard on it.
- crates/alien-infra/src/remote_stack_management/azure.rs — a move/edit
conflict: this branch relocated the grant helpers and their tests into
azure/management_grants.rs, while main added a `live_resource_ids`
parameter to `generate_stack_management_grant_plan` so a declined
resource's worker/dispatch-command grant is not issued at runtime. Took
this branch's file and ported main's change into the new location,
including its regression test. The single production call site now lives
in azure_remote_storage.rs and passes the desired stack's resource ids.
- client-sdks/platform/{openapi.json,rust/openapi-3.0.json,rust/openapi.json}
— minified single-line generated specs, structurally 3-way merged. The
two sides are disjoint: main adds runtimeMetadata.persistedGateAnswers,
this branch adds the debug-session and manager-token surfaces.
Regenerated the manager spec and its SDK copies from source, which picked
up main's import-time gate-answer refusal on the 409 response.
Added a test for the intersection the merge creates: a remote-access
bucket that also carries a gate. Its management grants render into the
bucket's own fragment, so the generic gating post-pass gates them with the
bucket while the shared custom role stays ungated, with no
remote-storage-specific gating code.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Tracks ALIEN-291.
Summary
put,get,head,list, anddelete.packages/commands/README.mdso the published@alienplatform/commandspackage has a landing page. It documents the standalone sender and the pull receiver, theALIEN_COMMANDS_*environment, and the{ managerUrl, deploymentId, token }client contract that ships today.Security and ownership
storage/remote-data-write.Breaking changes
/v1/resolve-credentialsroute.BindingsProvider::for_remote_deploymentwithBindings::for_remote_deployment.Verification
cargo test -p alien-manager --lib, the manager credential and full-feature infrastructure resolvers, AWS endpoint parsing, GCP/Azure setup-import ownership and dependency-drain cleanup, Azure storage-trigger reconciliation, and the full Azure worker/command-sender suites pass.iam:CreatePolicy/iam:AttachRolePolicy.RUSTC_WRAPPER= cargo check --workspace --all-targets, the comprehensive E2E app check, provider attenuation, permission, generated-client, N-API/TypeScript, example, and smoke suites,cargo check -p alien-platform-api, Rust formatting, generator shell validation, andgit diff --checkpass.a0d7f34dis clean at P0-P2. An earlier iteration granted the management role self-service on its own<stack>-deployment-management-*policies; because an IAM resource-name scope constrains a created policy's name and not its contents, that path could create an arbitrary-permission policy and self-attach it, so it was replaced with a setup-owned model where setup emits the concrete storage grant and the runtime never mutates IAM.a0d7f34d: https://github.com/alienplatform/alien/actions/runs/30090439965packages/commands/README.mdcommits are documentation only and touch no code path. Their TypeScript samples were type-checked against the built package exports, and the corrected guarantees (timeoutMsis a polling budget, native caller-validation errors can surface, and token-file / HTTP(S) validation rejectrunasynchronously) were confirmed against the implementation.CREATE_COMPLETE, remote storage binding resolution, command dispatch, public endpoint, a second release upgrade, and clean teardown. The GCP and Azure Terraform runs completed setup, provisioning torunning, binding resolution, and command dispatch, then hit a pre-existing worker public-endpoint surfacing issue that is unrelated to this change: this PR leaves the GCP worker endpoint-publishing path byte-identical tomain(its only GCP worker edits are in the delete path), and no run of that flow has previously reached that step.Stacked structural PR
The structural split PR #204 is based on this branch and carries only file-decomposition changes for ALIEN-291. Merge this PR first, then retarget #204 to
mainand merge it.