Skip to content

feat(deployment): edit manifest fields while quotes are live - #3390

Merged
ygrishajev merged 1 commit into
mainfrom
feat/deployment-edit-manifest-while-quoting
Jul 7, 2026
Merged

feat(deployment): edit manifest fields while quotes are live#3390
ygrishajev merged 1 commit into
mainfrom
feat/deployment-edit-manifest-while-quoting

Conversation

@ygrishajev

@ygrishajev ygrishajev commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Why

Fixes CON-631

On the redesigned Configure screen, requesting quotes locked the entire configuration. Changing
even a minor manifest detail — a container image tag, an environment variable, the start
command — meant using "Cancel & edit", which discarded the deployment and every quote already
returned and forced a full re-quote. Those edits don't change the resources, price or placement
that providers bid on, so the existing quotes stay valid — users should be able to make them in
place and deploy without starting over.

What

While quotes are live (after "Request quotes", before "Deploy"):

  • The manifest-only cards stay editable: image, environment variables, commands.
  • Everything that feeds the on-chain deployment group locks, with a lock glyph on the card
    header: compute resources, GPU, storage, replicas, pricing, placement/region, exposed ports,
    logs, reclamation. The lock banner now reads "Changing a locked setting needs new quotes."

On Deploy, when the manifest changed since the deployment was created, the deployment is
updated on-chain before the lease is created, so the provider receives the edited manifest and
the already-returned bids remain valid. When nothing changed, deploy goes straight to the lease.
This also removes a latent issue where deploy reused the create-time manifest and would have
silently dropped a quoting-window edit.

Verified end-to-end against the managed API: create → poll bids → update (manifest-only change)
→ create lease reusing a pre-update bid; the provider accepted the updated manifest.

Testing

  • Unit: useDeploymentFlow (updates before leasing only when the manifest changed,
    otherwise leases directly; returns to quoting on a failed update), ConfigurationPane /
    AdditionalSection (image/env/commands stay editable while the rest lock), CollapsibleCard
    (lock glyph), PaneLockBanner (copy).
  • E2E (configure-deployment-flow): after "Request quotes" the Docker image stays editable
    while CPU is disabled, and the lock banner shows the new copy.
Screen.Recording.2026-07-07.at.10.22.08.mov

Summary by CodeRabbit

  • New Features

    • Locked cards now show a clear lock indicator in the header, making read-only sections easier to spot.
    • Updated lock guidance explains that changing locked settings requires new quotes.
  • Bug Fixes

    • The deployment configuration pane now keeps only the intended sections locked; image, environment variables, and commands remain editable where appropriate.
    • Deploy flow behavior was improved so updates are applied before leasing when the deployed definition has changed.

@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 24 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 6673b079-4384-458e-aef9-67eb00eefdff

📥 Commits

Reviewing files that changed from the base of the PR and between 0f2cce1 and ed11fa1.

📒 Files selected for processing (28)
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/AdditionalSection/AdditionalSection.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/AdditionalSection/AdditionalSection.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/CommandsCard/CommandsCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/CommandsCard/CommandsCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/ConfidentialComputeCard/ConfidentialComputeCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/ConfigurationPane.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/ConfigurationPane.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/EnvironmentVariablesCard/EnvironmentVariablesCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/EnvironmentVariablesCard/EnvironmentVariablesCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/ExposePortsCard/ExposePortsCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/GpuCard/GpuCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/HardwareSection/HardwareSection.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/ImageCard/ImageCard.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/ImageCard/ImageCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/ImageSection/ImageSection.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/ImageSection/ImageSection.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/LogsCard/LogsCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/PersistentStorageCard/PersistentStorageCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/RamStorageCard/RamStorageCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/ConfigurationPane/RuntimeCard/RuntimeCard.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/PaneLockBanner/PaneLockBanner.spec.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/PaneLockBanner/PaneLockBanner.tsx
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/useDeploymentFlow/useDeploymentFlow.spec.ts
  • apps/deploy-web/src/components/deployments/ConfigureDeployment/useDeploymentFlow/useDeploymentFlow.ts
  • apps/deploy-web/tests/ui/configure-deployment-flow.spec.ts
  • apps/deploy-web/tests/ui/pages/ConfigureDeploymentPage.ts
  • packages/ui/components/collapsible-card.spec.tsx
  • packages/ui/components/collapsible-card.tsx
📝 Walkthrough

Walkthrough

This PR refines which configuration cards are locked when a deployment already exists on-chain: runtime, ports, and logs cards stay locked while image, environment variables, and commands cards remain editable. CollapsibleCard/CardTitle gain a visual lock indicator. useDeploymentFlow adds a pre-lease step that syncs the on-chain manifest via useUpdateDeployment when the SDL-derived manifest differs from the captured one before creating leases. Lock banner copy is updated accordingly.

Changes

Lock prop refinement and lock indicator UI

Layer / File(s) Summary
CollapsibleCard lock indicator
packages/ui/components/collapsible-card.tsx, packages/ui/components/collapsible-card.spec.tsx
Adds an optional locked prop to CollapsibleCardProps, forwards it through ActionCard and CardTitle, and renders a Lock icon with aria-label="Locked" when set; adds tests for both collapsible and action-card header paths.
Individual cards forward locked to CollapsibleCard
ConfidentialComputeCard.tsx, ExposePortsCard.tsx, GpuCard.tsx, HardwareSection.tsx, LogsCard.tsx, PersistentStorageCard.tsx, RamStorageCard.tsx, RuntimeCard.tsx
Each card now passes its locked prop through to its wrapping CollapsibleCard so the lock indicator renders at the card-shell level.
Remove locked prop from ImageCard/CommandsCard/EnvironmentVariablesCard
ImageCard.tsx, CommandsCard.tsx, EnvironmentVariablesCard.tsx, ImageSection.tsx, AdditionalSection.tsx, ConfigurationPane.tsx, and related *.spec.tsx
Removes the locked prop and disabled/fieldset gating from ImageCard, CommandsCard, and EnvironmentVariablesCard; updates ImageSection, AdditionalSection, and ConfigurationPane so these cards no longer receive locked while HardwareSection/AdditionalSection-forwarded runtime/ports/logs cards still do; tests updated to match.
Lock banner copy update
PaneLockBanner.tsx, PaneLockBanner.spec.tsx, configure-deployment-flow.spec.ts, ConfigureDeploymentPage.ts
Updates the lock banner text to "Changing a locked setting needs new quotes." and adjusts related test/page-object assertions, including the Docker image input now expected enabled while locked.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Pre-lease Deployment Manifest Update

Layer / File(s) Summary
Deploy flow manifest sync implementation and tests
useDeploymentFlow.ts, useDeploymentFlow.spec.ts
Adds useUpdateDeployment to DEPENDENCIES, wires it into useDeploymentFlow, and updates the deploy callback to derive the manifest from SDL and conditionally call updateDeployment before createLease when the manifest changed; extends tests for pending/success/failure paths.

Estimated code review effort: 4 (Complex) | ~40 minutes

Possibly related PRs

  • akash-network/console#3362: Both PRs adjust how the locked state is wired through Configure Deployment cards, changing which sub-cards receive locked={true}.
  • akash-network/console#3366: Introduced the initial AdditionalSection locked forwarding to EnvironmentVariablesCard/CommandsCard that this PR now removes/adjusts.
  • akash-network/console#3369: Introduced ExposePortsCard/LogsCard locked-mode wiring that this PR refines to keep only runtime/ports/logs locked.

Suggested reviewers: stalniy, baktun14

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/deployment-edit-manifest-while-quoting

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

@ygrishajev
ygrishajev force-pushed the feat/deployment-edit-manifest-while-quoting branch from aa6cc2b to 657db2a Compare July 6, 2026 14:40
@github-actions github-actions Bot added size: XL and removed size: M labels Jul 6, 2026
@codecov

codecov Bot commented Jul 6, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 68.66%. Comparing base (4cb9b8a) to head (ed11fa1).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3390      +/-   ##
==========================================
- Coverage   70.00%   68.66%   -1.34%     
==========================================
  Files        1102     1012      -90     
  Lines       27030    24697    -2333     
  Branches     6477     6019     -458     
==========================================
- Hits        18923    16959    -1964     
+ Misses       7116     6785     -331     
+ Partials      991      953      -38     
Flag Coverage Δ *Carryforward flag
api 85.57% <ø> (ø) Carriedforward from 4cb9b8a
deploy-web 54.97% <ø> (ø) Carriedforward from 4cb9b8a
log-collector ?
notifications 91.44% <ø> (ø) Carriedforward from 4cb9b8a
provider-console 81.38% <ø> (ø)
provider-inventory ?
provider-proxy 86.42% <ø> (ø) Carriedforward from 4cb9b8a
tx-signer ?

*This pull request uses carry forward flags. Click here to find out more.

Files with missing lines Coverage Δ
...Deployment/ConfigurationPane/ConfigurationPane.tsx 100.00% <ø> (ø)

... and 93 files with indirect coverage changes

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@ygrishajev
ygrishajev force-pushed the feat/deployment-edit-manifest-while-quoting branch from 657db2a to 0f2cce1 Compare July 6, 2026 14:52
@github-actions github-actions Bot added size: M and removed size: XL labels Jul 6, 2026
@ygrishajev
ygrishajev force-pushed the feat/deployment-edit-manifest-while-quoting branch from 0f2cce1 to bbe6548 Compare July 6, 2026 15:12
After quotes are requested, only the fields that can't change on-chain lock (compute
resources, pricing, placement, replicas, ports); the image, environment variables and
commands stay editable. Deploying after such an edit updates the deployment before creating
the lease, so the provider receives the edited manifest and the already-returned bids stay
valid.
@ygrishajev
ygrishajev force-pushed the feat/deployment-edit-manifest-while-quoting branch from bbe6548 to ed11fa1 Compare July 6, 2026 15:14
@ygrishajev
ygrishajev added this pull request to the merge queue Jul 7, 2026
Merged via the queue into main with commit bd3c34e Jul 7, 2026
59 checks passed
@ygrishajev
ygrishajev deleted the feat/deployment-edit-manifest-while-quoting branch July 7, 2026 08:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants