← Back to issue list

Handle project variables with curly braces in app commands

View original Github issue

Metadata

Project
snapcraft
Number
#5500
Type
issue
State
open
Author
mr-cal
Labels
Status: Triaged Type: Bug
Created
Updated
Closed
—

Current evaluation

Triaged regression: since Snapcraft 8.5.1 (merged via #5183), app commands containing braced project variables like ${SNAPCRAFT_PROJECT_NAME} fail validation. Root cause identified; volunteer ready to PR a fix.

Suggested action: keep open

Reason: Labels show 'Status: Triaged' and 'Type: Bug' on a maintainer-authored report, and the body includes a concrete reproducer (`command: bin/${SNAPCRAFT_PROJECT_NAME}`) plus an internal ticket (SNAPCRAFT-1135). A 2026-10-02 comment by Mohil-Ahuja pinpoints the root cause: the bus_name validator widened by #5183 to cover command/stop_command/post_stop_command/reload_command uses a character class that excludes `{`/`}`, and volunteers to PR the fix with regression tests. No resolving commit or PR is referenced and the issue remains open, so it stays open; the fix is a small character-class widening so complexity is low. Confidence is capped at 72 because the repository tooling had no pinned SHA, so I could not verify the current validator code in snapcraft/models or whether a fix has since landed in the tree.

Evaluated by: mr-cal-bot

Impact: 55 Quick Win: 40 Complexity: 20 Confidence: 72 Actionability: 90

Issue body

### What needs to get done Snapcraft should not fail when project variables with curly braces are used in app commands. ### Why it needs to get done This is a regression. Prior to https://github.com/canonical/snapcraft/pull/5183, Snapcraft used to allow: ```yaml apps: my-app: command: bin/${SNAPCRAFT_PROJECT_NAME} ```

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha
Impact: 55
Quick Win: 40
Complexity: 20
Confidence: 72
Actionability: 90
keep open Triaged regression: since Snapcraft 8.5.1 (merged via #5183), app commands containing braced project variables like ${SNAPCRAFT_PROJECT_NAME} fail validation. Root cause identified; volunteer ready to PR a fix.
stealth/space-bunny-alpha
Impact: 58
Quick Win: 40
Complexity: 22
Confidence: 80
Actionability: 88
keep open Triaged regression: since PR #5183, app command fields reject braced project variables like ${SNAPCRAFT_PROJECT_NAME}. Root cause identified (bus_name validator char class excludes {}); a contributor has offered a PR.
stealth/space-bunny-alpha
Impact: 48
Quick Win: 22
Complexity: 40
Confidence: 80
Actionability: 76
keep open Triaged regression: since merged PR #5183, Snapcraft reportedly rejects app commands containing braced project variables such as ${SNAPCRAFT_PROJECT_NAME}; no fix is recorded.
qwen/qwen3.6-35b-a3b
Impact: 30
Quick Win: 22
Complexity: 10
Confidence: 80
Actionability: 80
keep open Regression: Snapcraft rejects app commands containing curly braces like ${SNAPCRAFT_PROJECT_NAME} due to overly restrictive validation regex
qwen/qwen3.8-27b
Impact: 50
Quick Win: 30
Staleness: 75
Complexity: 40
Confidence: 70
Support Request: 0
keep open Regression: Snapcraft fails when project variables with curly braces (e.g. ${SNAPCRAFT_PROJECT_NAME}) are used in app commands, introduced by PR #5183. Triaged bug, open and inactive for ~15 months.
qwen/qwen3.6-35b-a3b
Staleness: 95
Complexity: 45
Confidence: 85
Support Request: 10
keep open Regression causing Snapcraft to fail when project variables with curly braces are used in app commands. Triaged bug, inactive for over a year, awaiting fix.
qwen3.6-35b-a3b-mtp-q6
Staleness: 90
Complexity: 40
Confidence: 85
Support Request: 5
keep open Regression in Snapcraft where app commands fail when using project variables with curly braces, introduced by PR #5183. Triaged bug with no maintainer activity for over a year.

Update history

Date Change
updated

Related work

  • Caused By: canonical/snapcraft#5183 (confidence 55%)

    Cited in the issue body as the introducing change; however that ref is a release merge PR ('chore(merge): 8.5.1 into main'), so the actual validator change came from a 8.5.1 branch commit it pulled in — the causal link is asserted, not verified in code.

Related issues

Issue Project State Summary Similarity
#6464 fix(models): allow project variables in app commands snapcraft open Allows well-formed ${SNAPCRAFT_*}/${CRAFT_*} project-variable references in app command fields by stripping them before snapd character validation; adds unit tests. Awaiting maintainer re-review after feedback.
78%
#5499 fix: evaluate variables in project file snapcraft merged Merged in canonical/snapcraft#5499 (commit abd5db829), restoring project-variable expansion and fixing #5491 in Snapcraft 8.9.2.
73%