Skip to content

[skip ci] Prepare first-push runners and preserve supervisor execution - #255

Merged
matuscongrady merged 1 commit into
mainfrom
t3/speed-cold-git-push-deploy
Oct 21, 2026
Merged

matuscongrady merged 1 commit into
mainfrom
t3/speed-cold-git-push-deploy

Conversation

@matuscongrady

@matuscongrady matuscongrady commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

The native release archive currently strips the executable bit from helper-lambdas/stacktape-supervisor, causing container tasks to fail with permission denied. Preserve the bit, verify extracted native artifacts, and exercise a real extraction/execution in the archive test.

Update the Console pointer for background preparation of empty Git deployment runners at setup, and disclose the earlier storage billing in CLI setup and the GitOps guide. The generated CLI documentation comes from that guide. Default stopped disks cost $8.80/month in eu-west-1, plus brief setup compute; repository, dependency and build caches remain empty until the first push.

Validation: archive tests, native installation characterization, source-built runtime in live Lambda and container Git pushes, generated-file checks and the integrated repository gate. The paired Console PR contains the phase measurements, five-sample AWS timing results and cleanup verification.

Depends on https://github.com/stacktape/console-app/pull/104. Hosted dev rollout remains blocked by the owner-managed Paddle sandbox verification key; no placeholder or bypass was used.

Final qualification: 7 cold first pushes and 7 paired hibernation resumes per app, 42 successful pushes. Every sample passed business and unchanged-revision checks. Each cold round used a distinct host and new cache disk, prepared at Git setup with no repository/dependency/build cache. Each resume reused that round’s host. Workloads were confined to stacktape-e2e (597581086285), eu-west-1.

App First push median (range), s Resume median (range), s Cold target, s Decision
lambda-5 54 (50–70) 51 (49–63) 59 GO
lambda-25 61 (55–74) 60 (51–79) 72 GO
container-node 45 (40–122) 43 (40–48) 34 NO-GO; drop cold container test

These conservative durations use AWS clock responses before the Git push and after readiness, rather than the drifting WSL clock. All seven observations are retained, including the first container push’s image-deploy fallback. Five rounds additionally recorded AWS dates on each target’s first correct response:

  • lambda-5: first push 54 (50–63) s; resume 50 (47–61) s. Observer scheduling explains occasional gaps between these service timestamps and the conservative observations.
  • lambda-25: first push 60 (51–61) s; resume 59 (51–65) s. Observer scheduling explains occasional gaps between these service timestamps and the conservative observations.
  • container-node: first push 44 (40–48) s; resume 40 (39–42) s. Observer scheduling explains occasional gaps between these service timestamps and the conservative observations.

Before/after AWS phase breakdown (seconds; baseline is one fresh cold push per Lambda app on the current source-built runtime, after is the median of five rounds with service-response timing):

App Push → queue Queue → runner ready Job setup npm install CLI
lambda-5 6.3 → 6.6 44.7 → 15.2 11.0 → 3.0 17.0 → 9.0 39.0 → 14.0
lambda-25 6.2 → 7.4 46.7 → 17.4 11.0 → 3.0 17.0 → 8.0 49.0 → 20.0

Current-source baseline readiness was 128 s / 138 s (n=1 each), rather than a new reproduction of the historical 87 s median. The image already uses AL2023 Minimal. Fresh EC2 launch → SSM Online took roughly 31–40 s. Starting at the webhook still leaves boot inside push timing; FSR adds recurring per-AZ fees and leaves guest/SSM startup. Setup-time hibernation moves boot and installed-tool reads outside the push, retains no customer build cache and needs no always-running compute. Preparation itself takes minutes and incurs brief compute charges. An immediate push before preparation completes keeps the ordinary startup path. The duplicate CLI install remains separate work.

Cleanup verified: original dev AMI pointer restored; owned CloudFormation stacks, projects/configurations, runners, root/cache disks, IAM roles/profiles and credential parameters absent; all three test AMIs/snapshots removed; builders terminated and their temporary security groups/keypairs absent; benchmark branches deleted; task reservation released. Both Git working trees are clean. No production action or credential change.

Raw phase rows, AWS timing observations and recovery/deletion evidence remain in the ignored .stacktape/cold-runner-20261021 directory.

🤖 Generated with Claude Code

…rchives

Update the Console pointer for background preparation of empty first-push runners. Preserve and verify the code-swap supervisor execute bit in native release archives, and disclose setup storage billing in the CLI and GitOps guide.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@matuscongrady
matuscongrady merged commit fa948c5 into main Oct 21, 2026
@matuscongrady
matuscongrady deleted the t3/speed-cold-git-push-deploy branch October 21, 2026 06:32
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