Skip to content

Orchestrate local provision and staged dry-runs #291

Description

@aram356

Description

Section 3 of #288 covers local orchestration, baseline bootstrap and genuine staged dry-run. PR #287 contains the proposed implementation but remains unmerged. Dependencies: #289, #290.

Steps to reproduce

Inspection steps (no tests executed):

  1. Inspect main provision orchestration.
  2. Compare this section’s tasks in local-provision plan with the open branch.
  3. Confirm the local-provision contract is still absent from main rather than treating checked-off branch tasks as delivery.

Expected behavior

The section’s contract is present on main and composes with the other local-provision sections without cloud operations during local mode.

Impact

Local provisioning has no mainline dispatch/staging path, and a textual cloud plan is insufficient to preview local file writes.

Proposed fix

Review and merge this section through PR #287, preserving the tasks below and subsequent umbrella amendments. Reconcile with current main rather than reintroducing removed Fastly runtime-env descriptors.

Dependencies: #289, #290.

Done when

  • Task 8: Refactor run_provision to derive ProvisionMode from args.local + call path safety
  • Task 8b: CLI-owned first-run bootstrap synthesis BEFORE validate_adapter_manifest (local arms only, never cloud); add Adapter::synthesise_baseline_manifest trait method
  • Task 9: Recursive copy helper for dry-run staging; promote tempfile + toml_edit to CLI runtime deps
  • Task 10: run_with_staging<F, R> helper (takes project-RELATIVE crate path; no strip_prefix)
  • Task 11: Wire mode × dry-run dispatch matrix (4 cells) + OwnedProvisionStores helper
  • Task 12: Dry-run report — build_dry_run_allow_list (resolved manifest path, not static filenames) + render_dry_run_report (project-relative paths, no tempdir leak)
  • Task 13: Worktree-clean + no-tempdir-leak regression test (ignored until Section 5 lands; re-enabled by Task 28b)
  • Redact env values in ordinary and commented assignment lines; cover renamed/nested adapter crates and avoid all temporary-directory leaks.

Required repository verification: cargo fmt --all -- --check; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo test --workspace --all-targets; cargo check --workspace --all-targets --features "fastly cloudflare spin"; cargo check -p edgezero-adapter-spin --target wasm32-wasip2 --features spin. These are acceptance requirements, not tests executed during this audit.

Related

#288; local-provision plan; PR #287 is the fully covering open PR. #289, #290

July amendment: all five generated manifests, including axum.toml, are gitignored.

Activity

  1. self-assigned this
    on Jun 30, 2026
  2. changed the title [-]Section 3 — Local provision orchestration + dry-run staging (Tasks 8–13)[/-] [+]Orchestrate local provision and staged dry-runs[/+] on Nov 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions