Skip to content

fix(smoke): use the prebuilt CLI in E2E; arm the extender in the daemon-claim smoke test - #318

Merged
IanFrelinger merged 1 commit into
masterfrom
fix/smoke-cli-prebuilt-and-extender-mode
Aug 16, 2026
Merged

fix(smoke): use the prebuilt CLI in E2E; arm the extender in the daemon-claim smoke test#318
IanFrelinger merged 1 commit into
masterfrom
fix/smoke-cli-prebuilt-and-extender-mode

Conversation

@IanFrelinger

Copy link
Copy Markdown
Owner

Summary

Follow-up to #317. That PR got the Full Platform Readiness Gate past architecture validation for the first time in 60+ runs (Validation passed (2984/2984 tests), 26/26 projects) — which let it reach the next step, "Dry-run — build + run smoke tests", skipped on every previous run. Two long-standing failures were waiting there (cross-platform-tests has shown them since March; nothing recent caused them):

1. Windows: every RuntimeStudio smoke test — CLI build failed (exit 1) … Nexo.API.dll … locked by testhost

CliRunner rebuilt the CLI from inside the test host. The CLI's project graph includes the test projects (its test command discovers them by assembly name — TestRunnerAdapter does Assembly.Load("Nexo.Tests.Infrastructure")), so that build also rebuilt Nexo.Tests.Infrastructure — copying into the very bin the running testhost had locked. Windows-only file locking, every test.

Fix: an already-built CLI wins. Every CI lane builds the CLI in a setup step before any test host exists (readiness: "Setup — build CLI"; cross-platform: dotnet build Nexo.sln), so no in-host build happens in CI at all; the fallback build remains for a cold local run. NEXO_CLI_FORCE_REBUILD=1 restores the old behaviour for local CLI edit-run loops.

2. All OSes: Daemon_extender_claims_objective_from_store_increments_attemptsAttempts stayed 0

Since 20e6ded6 (Jun 24, "default aggressiveness Passive; deny extender when unconfigured") the daemon must not act on a backlog nobody armed. This Apr 18 test predates that and never set a mode → passive → extender skipped → no claim. The product is right; the test's setup was stale.

Fix: the test pins the passive default (the safety invariant), then sets active; the claim is the Active-mode contract. Reproduced end to end in a container against the real CLI: passive → Attempts: 0; active → Self-extend cycle (claim-smoke-owner) claimed objective … attempt #1, released, Attempts: 1.

Test plan

  • Container, exactly as the gate does it (CLI prebuilt in a setup step, then the gate's filter BaseFrameworkSmokeTests|RuntimeStudioBlackBoxSmokeTests): 20/20 (was 19/20)
  • CI gates green on this PR
  • After merge: Full Platform Readiness Gate on master — expected: first green in its recorded history. Windows leg is the one to watch (the lock fix can only be exercised there).

🤖 Generated with Claude Code

…m smoke test
With #317 the readiness gate finally gets past architecture validation — and lands on the next
step, "Dry-run — build + run smoke tests", which had been skipped on every previous run. Two
long-standing failures were waiting there (cross-platform-tests has shown them since March):
- Every RuntimeStudio smoke test on Windows: "CLI build failed (exit 1) … Nexo.API.dll … locked
by testhost". CliRunner rebuilt the CLI from INSIDE the test host; the CLI's project graph
includes the test projects (its `test` command discovers them by assembly name), so that build
also rebuilt Nexo.Tests.Infrastructure — into the bin the running testhost had locked. Every
CI lane builds the CLI in a setup step before any test host exists, so an already-built CLI
now wins; the in-host build is only the fallback when none exists. NEXO_CLI_FORCE_REBUILD=1
restores the old behaviour for local CLI edit-run loops.
- Daemon_extender_claims_objective_from_store_increments_attempts on every OS: Attempts stayed
0. Since 20e6ded (Jun 24) an unconfigured extender is DENIED — the aggressiveness mode
defaults to passive — and this Apr 18 test never set a mode. The product is right (a daemon
must not act on a backlog nobody armed); the test now pins the passive default, then sets
active, and the claim is the Active-mode contract. Reproduced end to end in a container:
passive → Attempts 0; active → "claimed objective … attempt #1", released, Attempts 1.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@cursor

cursorBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@IanFrelinger
IanFrelinger merged commit b2613ab into masterAug 16, 2026
7 checks passed
@IanFrelinger
IanFrelinger deleted the fix/smoke-cli-prebuilt-and-extender-mode branch August 16, 2026 12:16
Sign up for freeto 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.

2 participants

@IanFrelinger@PlzTouchGrass