aicell-lab / aicell-lab/bioengine

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

Open
#157 0 comments 0 reactions 1 assignee View on GitHub

@nilsmechtel is already working on this.

Since Aug 13, 2026.

bug
Dominant language
Python
Stars
9
Forks
4
Avg merge
1d 19h
Merged PRs (30d)
5

Description

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.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.