Skip to content

apps deploy --app-id silently no-ops on a running app, leaving artifact/backend version skew #157

Description

@nilsmechtel

Found: 2026-08-05, during a controlled study of building a BioEngine app from the skill alone (Tier 4, frontend). Reporter is an AI build agent; behaviour reproduced across 3 deploys and 25 status polls.

Summary

bioengine apps deploy ./dir --app-id <id-of-running-app> uploads a new artifact version but leaves the running application on the old version, silently and indefinitely. SKILL.md states it "updates if it matches a running one".

Observed

  1. App running as nuclei-seg, version 1.0.0, status RUNNING/HEALTHY.
  2. bioengine apps deploy ./dir --app-id nuclei-seg with a bumped manifest.
  3. Artifact gained version 1.0.1.
  4. Running app stayed status=RUNNING, running_version=1.0.0, and the newly added method was absent from available_methods.
  5. Polled 25 times over >8 minutes. The app never entered DEPLOYING. No error, no warning, exit code 0.
  6. bioengine apps run <artifact> --app-id nuclei-seg --version 1.0.1 rolled it forward correctly in ~20 s.

Why this is worse than it looks, for apps with a frontend

The static site serves the artifact HEAD while the backend serves its deployed version. After a no-op apps deploy, a browser is served the v1.0.1 index.html against a v1.0.0 backend. If the new HTML calls a method added in the same bump, the UI fails at runtime while apps status reports RUNNING/HEALTHY throughout. There is no signal anywhere that the two halves are out of step.

Contributing factor

apps run accepts --version. apps deploy accepts no version flag at all, so there is no way to express "deploy this specific version to this running app" through the command the docs point you at.

Expected

Either (a) apps deploy --app-id <running-id> triggers a redeploy to the new version, or (b) it fails loudly and tells the user to use apps run --version. Silently succeeding while doing nothing is the worst of the three.

Additionally, consider surfacing artifact-head-vs-deployed-version skew in apps status for apps that serve a frontend.

Related minor finding

references/service_ids.md claims the replica suffix "changes on every redeploy". It stayed 875b97ef, byte-identical, across 3 deploys of the same app id. The advice to re-resolve the service ID is still correct, but the stated rationale is wrong, and the agent briefly used an unchanged suffix as a false "redeploy succeeded" signal.

Environment

Worker bioengine-worker-europa; CLI 0.14.0 installed via pip install "bioengine[cli] @ git+https://github.com/aicell-lab/bioengine.git"; app format_version: 0.6.0, CPU-only, entry: + frontend_entry:.


Provenance: found by an AI build agent in a controlled skill-only study (Tier 4), reproduced across 3 deploys. Filed on the reporter's behalf.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions