Skip to content

fix(#54): point OMNIBIOAI_HOST_APP_PREFIX/PROXY_ALLOWED_BIND_PREFIXES at the real omnibioai-workbench checkout - #65

Merged
man4ish merged 2 commits into
mainfrom
fix/54-workflow-runner-host-app-prefix
Aug 28, 2026
Merged

fix(#54): point OMNIBIOAI_HOST_APP_PREFIX/PROXY_ALLOWED_BIND_PREFIXES at the real omnibioai-workbench checkout#65
man4ish merged 2 commits into
mainfrom
fix/54-workflow-runner-host-app-prefix

Conversation

@man4ish

@man4ish man4ish commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

Problem

workflow_runner (omnibioai-workbench, plugins/workflow_runner/views.py::_run_in_docker_runner) spawns a sibling Nextflow/Cromwell container and rewrites its /app/... volume sources back to real host paths via OMNIBIOAI_HOST_APP_PREFIX + docker-shim.sh, so the outer Docker daemon (via docker-socket-proxy) can bind them.

OMNIBIOAI_HOST_APP_PREFIX was set to ${WORKSPACE_HOST} -- the whole machine directory (also used elsewhere for an unrelated, intentionally-broad /workspace mount on other services) -- not the repo /app is actually built from (this file's own context: ${MACHINE_DIR}/omnibioai-workbench for the workbench/celery-worker services).

Confirmed live: every past bind-mount attempt through this wrong value (and workflow_runner's own equally-stale Python-side fallback default, fixed in the companion omnibioai-workbench PR) resolved against ${MACHINE_DIR}/omnibioai -- a directory that has never held a real checkout -- and Docker silently auto-created it as empty, root-owned debris on the host instead of failing loudly.

Fix

  • OMNIBIOAI_HOST_APP_PREFIX: ${WORKSPACE_HOST}${MACHINE_DIR}/omnibioai-workbench (workbench + celery-worker services, all 3 compose files).
  • PROXY_ALLOWED_BIND_PREFIXES: ${MACHINE_DIR}/omnibioai${MACHINE_DIR}/omnibioai-workbench, so the corrected bind source is still proxy-allowed.
  • Flagged inline, not fixed here (separate pre-existing gap, different repo): TES's own local.py::_find_repo_root() returns the parent containing an omnibioai/ subdir, not the subdir itself -- so its real repo_root bind source is bare ${MACHINE_DIR}, which was never covered by the old ${MACHINE_DIR}/omnibioai entry either, before or after this rename.

WORKSPACE_HOST itself and .env are untouched -- other services (toolserver etc.) still rely on WORKSPACE_HOST's current broad value for their own unrelated /workspace mount.

Companion PR

omnibioai-workbench: OmniBioAI/omnibioai-workbench#461 -- fixes the matching Python-side stale fallback defaults + the object-registry path-resolution root blocker this same live-verification uncovered, and does the full real end-to-end verification (real bundle registered, submitted through the real API, ran to completion including a real nested Docker task through this proxy chain).

Verification

  • docker compose -f docker-compose.yml config (all 3 files parse; interpolation confirmed to resolve OMNIBIOAI_HOST_APP_PREFIX to the real, populated /home/manish/Desktop/machine/omnibioai-workbench, now inside PROXY_ALLOWED_BIND_PREFIXES).
  • Live-redeployed docker-socket-proxy + rebuilt/redeployed workbench with this config; a real Nextflow workflow run (including a nested Docker task via docker-socket-proxy) completed successfully end-to-end for the first time -- see companion PR #461 for the full E2E verification detail.

Not merged -- open for review per standing instruction.

🤖 Generated with Claude Code

man4ish and others added 2 commits August 28, 2026 10:34
… at the real omnibioai-workbench checkout

workflow_runner (omnibioai-workbench) spawns a sibling Nextflow/Cromwell
container and rewrites its /app/... volume sources back to real host
paths via OMNIBIOAI_HOST_APP_PREFIX + docker-shim.sh, so the outer
Docker daemon (via docker-socket-proxy) can bind them. This env var was
set to ${WORKSPACE_HOST}, the whole machine directory (used elsewhere
for an unrelated broad /workspace mount) -- not the repo /app is
actually built from (this file's own `context: ${MACHINE_DIR}/
omnibioai-workbench` for the workbench/celery-worker services).

Confirmed live: every past bind-mount attempt through this wrong value
(and workflow_runner's own equally-stale Python-side fallback default)
resolved against ${MACHINE_DIR}/omnibioai -- a directory that has never
held a real checkout -- and Docker auto-created it as empty, root-owned
debris on the host rather than failing loudly.

Changes:
- OMNIBIOAI_HOST_APP_PREFIX: ${WORKSPACE_HOST} -> ${MACHINE_DIR}/omnibioai-workbench
  (workbench + celery-worker services, all 3 compose files)
- PROXY_ALLOWED_BIND_PREFIXES: ${MACHINE_DIR}/omnibioai ->
  ${MACHINE_DIR}/omnibioai-workbench, so the corrected bind source is
  still proxy-allowed
- Flagged (not fixed, separate pre-existing gap, unrelated repo):
  TES's own local.py _find_repo_root() returns the PARENT containing an
  omnibioai/ subdir, not the subdir itself -- so its real repo_root bind
  source is bare ${MACHINE_DIR}, which was never covered by the old
  ${MACHINE_DIR}/omnibioai entry either. Documented inline, not changed
  here.

WORKSPACE_HOST itself and .env are untouched -- other services
(toolserver etc.) still rely on WORKSPACE_HOST's current broad value for
their own /workspace mount, unrelated to this fix.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V9s2QraSk9rkMgB3Msiz2S
Pre-merge review caught this: comments claimed OMNIBIOAI_HOST_APP_PREFIX/
workflow_runner's own stale fallback was "the source of" the wrecked,
empty ${MACHINE_DIR}/omnibioai directory. Checked further and that's not
supported -- the directory's own mtimes and the real `tes` container's
start time both predate every run this fix's live-verification did,
while `tes` itself has its own unrelated, long-running
`${MACHINE_DIR}/omnibioai:${MACHINE_DIR}/omnibioai:rw` bind in this same
file (Docker auto-creates a missing bind source as an empty directory
the first time a container using it starts) -- a far more likely actual
origin. Corrected the comments to say so instead of overclaiming
workflow_runner as the cause; the fix itself (OMNIBIOAI_HOST_APP_PREFIX/
PROXY_ALLOWED_BIND_PREFIXES now pointing at the real omnibioai-workbench
checkout) is unaffected either way. Matching correction made in the
companion omnibioai-workbench PR.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V9s2QraSk9rkMgB3Msiz2S
@man4ish
man4ish merged commit b0d01ba into main Aug 28, 2026
6 of 7 checks passed
@man4ish
man4ish deleted the fix/54-workflow-runner-host-app-prefix branch August 28, 2026 16:03
man4ish added a commit that referenced this pull request Aug 31, 2026
Correct stale Admin Console claims against current merged
omnibioai-control-center main (PRs #65-#71):

- Admin Console is live-tested at admin.omnibioai.org (authenticated
  E2E 8/8), not deployment-dependent.
- Security Audit Explorer is merged and live-certified for its
  exercised paths (deep link, hard refresh, sidebar, history,
  filters/details, safe metadata, read-only) -- no longer 'not yet a
  completed UI'.
- Document /workflows as the committed deep-link route; /workflow-operations
  is explicitly not a separate committed route.
- Preserve the Audit Logs vs. Audit Explorer distinction (Auth identity
  ledger vs. Security Audit's safe durable audit-event contract).
- Add a high-level Admin Console -> Control Center -> Security Audit
  safe API -> durable audit_events architecture diagram, linking to
  the authoritative Control Center Admin Console guide instead of
  duplicating it.
- Add a concise SAT-1..SAT-4 status summary without claiming
  ecosystem-wide completeness.
- Keep the existing Integration Health / WORKBENCH_PLUGIN_REGISTRY_PATH
  documentation (accurate, from the prior unpushed commit) and clarify
  the inventory is derived dynamically, not hard-coded.

README.md only; no product/config changes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W1o9a9tktwmpSjnYraVGNo
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