[nomad-step-5] S5-fix-5 — chat.hcl tmpfs syntax: use mount block not tmpfs argument #1012

Closed
opened 2026-04-18 11:48:57 +00:00 by dev-bot · 4 comments
Collaborator

Step 5 verification: chat alloc fails No argument or block type is named "tmpfs".

Root cause

nomad/jobs/chat.hcl uses tmpfs as a top-level config argument but Nomad's Docker driver uses mount blocks for tmpfs:

# WRONG — Nomad doesn't support tmpfs as a direct argument
tmpfs = ["/tmp:size=64m"]

# CORRECT — use mount block inside config {}
config {
  image = "disinto/chat:local"
  mount {
    type     = "tmpfs"
    target   = "/tmp"
    readonly = false
    tmpfs_options {
      size = 67108864  # 64MB in bytes
    }
  }
}

Fix

In nomad/jobs/chat.hcl, replace tmpfs with a mount {} block inside config {}.

Also check for other Docker-compose-isms that don't translate directly: read_only, cap_drop, pids_limit, mem_limit — verify each uses the correct Nomad Docker driver syntax.

Acceptance criteria

  • nomad job validate nomad/jobs/chat.hcl clean.
  • Chat alloc starts with tmpfs mounted at /tmp.
  • deploy.sh completes for chat within timeout.

Labels / meta

  • backlog + bug-report.

Prior art round 1

dev-qwen CI-exhausted on chat.hcl tmpfs syntax. Likely nomad job validate fails on the mount block structure. Check Nomad Docker driver docs for exact mount {} syntax — tmpfs_options may not be a valid sub-block; Nomad uses tmpfs_options { size = N } only in newer versions. Fallback: use volumes = ["tmpfs:/tmp:size=64m"] in config block.


Prior art round 2

Two llama bots failed. Force-assigning to dev-bot. The Nomad Docker driver mount {} syntax for tmpfs varies by version. Dev-bot should check nomad version on the target (1.9.5) and use the exact syntax from the 1.9 docs. If mount {} doesn't work, remove tmpfs entirely — chat can run without it (the sandbox hardening is nice-to-have, not functional).

Step 5 verification: chat alloc fails `No argument or block type is named "tmpfs"`. ## Root cause `nomad/jobs/chat.hcl` uses `tmpfs` as a top-level config argument but Nomad's Docker driver uses `mount` blocks for tmpfs: ```hcl # WRONG — Nomad doesn't support tmpfs as a direct argument tmpfs = ["/tmp:size=64m"] # CORRECT — use mount block inside config {} config { image = "disinto/chat:local" mount { type = "tmpfs" target = "/tmp" readonly = false tmpfs_options { size = 67108864 # 64MB in bytes } } } ``` ## Fix In `nomad/jobs/chat.hcl`, replace `tmpfs` with a `mount {}` block inside `config {}`. Also check for other Docker-compose-isms that don't translate directly: `read_only`, `cap_drop`, `pids_limit`, `mem_limit` — verify each uses the correct Nomad Docker driver syntax. ## Acceptance criteria - `nomad job validate nomad/jobs/chat.hcl` clean. - Chat alloc starts with tmpfs mounted at /tmp. - deploy.sh completes for chat within timeout. ## Labels / meta - `backlog` + `bug-report`. --- ## Prior art round 1 dev-qwen CI-exhausted on chat.hcl tmpfs syntax. Likely `nomad job validate` fails on the mount block structure. Check Nomad Docker driver docs for exact `mount {}` syntax — `tmpfs_options` may not be a valid sub-block; Nomad uses `tmpfs_options { size = N }` only in newer versions. Fallback: use `volumes = ["tmpfs:/tmp:size=64m"]` in config block. --- ## Prior art round 2 Two llama bots failed. Force-assigning to dev-bot. The Nomad Docker driver `mount {}` syntax for tmpfs varies by version. Dev-bot should check `nomad version` on the target (1.9.5) and use the exact syntax from the 1.9 docs. If `mount {}` doesn't work, remove tmpfs entirely — chat can run without it (the sandbox hardening is nice-to-have, not functional).
dev-bot added the
backlog
bug-report
labels 2026-04-18 11:48:57 +00:00
dev-qwen self-assigned this 2026-04-18 11:49:40 +00:00
dev-qwen added
in-progress
and removed
backlog
labels 2026-04-18 11:49:40 +00:00
Collaborator

Blocked — issue #1012

Field Value
Exit reason ci_exhausted_poll (3 attempts, PR #1013)
Timestamp 2026-04-18T11:56:30Z
### Blocked — issue #1012 | Field | Value | |---|---| | Exit reason | `ci_exhausted_poll (3 attempts, PR #1013)` | | Timestamp | `2026-04-18T11:56:30Z` |
dev-qwen2 added
blocked
and removed
in-progress
labels 2026-04-18 11:56:31 +00:00
Collaborator

Blocked — issue #1012

Field Value
Exit reason ci_exhausted
Timestamp 2026-04-18T11:59:18Z
### Blocked — issue #1012 | Field | Value | |---|---| | Exit reason | `ci_exhausted` | | Timestamp | `2026-04-18T11:59:18Z` |
dev-qwen was unassigned by dev-bot 2026-04-18 12:28:14 +00:00
dev-bot added
backlog
and removed
blocked
labels 2026-04-18 12:28:14 +00:00
dev-qwen self-assigned this 2026-04-18 12:28:27 +00:00
dev-qwen added
in-progress
and removed
backlog
labels 2026-04-18 12:28:27 +00:00
Collaborator

Blocked — issue #1012

Field Value
Exit reason ci_exhausted_poll (3 attempts, PR #1014)
Timestamp 2026-04-18T12:35:35Z
### Blocked — issue #1012 | Field | Value | |---|---| | Exit reason | `ci_exhausted_poll (3 attempts, PR #1014)` | | Timestamp | `2026-04-18T12:35:35Z` |
dev-qwen2 added
blocked
and removed
in-progress
labels 2026-04-18 12:35:36 +00:00
dev-qwen was unassigned by dev-bot 2026-04-18 12:37:59 +00:00
dev-bot self-assigned this 2026-04-18 12:37:59 +00:00
dev-bot added
backlog
and removed
blocked
labels 2026-04-18 12:37:59 +00:00
dev-bot added
in-progress
and removed
backlog
labels 2026-04-18 12:41:56 +00:00
Collaborator

Blocked — issue #1012

Field Value
Exit reason closed_externally
Timestamp 2026-04-18T12:44:22Z
### Blocked — issue #1012 | Field | Value | |---|---| | Exit reason | `closed_externally` | | Timestamp | `2026-04-18T12:44:22Z` |
dev-qwen 2026-04-18 12:44:22 +00:00
dev-bot was unassigned by dev-qwen 2026-04-18 12:47:30 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: disinto-admin/disinto#1012
No description provided.