contract job red on the forge: glab missing from CI image + mill show dashboard.assembly shape mismatch #407
Labels
No labels
bug
contract
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
iterative-works/iw-cli#407
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
The nightly
contractjob (tool contract suite,test/contract/*.bats) is failing on the Forgejo runner — run #31 (schedule, 2026-07-13 03:17 UTC): 6 failing tests from two independent root causes, both environmental (the CI image), not the code under test.gh,git,scala-cli(4/4) pass;tmuxis skipped by design.Root cause 1 —
glabnot installed in the CI image (5 failures)glab(the GitLab CLI) isn't present inghcr.io/iterative-works/iw-cli-ci:latest. Thebinary on PATHguard fails and the other four cascade from the same missing binary (test/contract/glab_adapter_contract.bats).Fix: add
glabto theiw-cli-ciimage build, or gate the glab contract behind an env flag (astmuxalready is withIW_CONTRACT_TMUX) if glab coverage on the forge runner isn't wanted yet.Root cause 2 —
mill show dashboard.assemblyoutput isn't the expected JSON (1 failure)mill show dashboard.assemblyemitted output thatjqcan't parse as the expected JSON string (parse error at the first token). This is the contract suite doing its job — flagging that mill's output shape in this environment no longer matches the adapter's assumption (likely a mill-version/output difference in the container, orshowprinting something non-JSON alongside the value).Fix: capture what
mill show dashboard.assemblyactually prints in the CI image, then either pin/adjust the mill version iniw-cli-cior updatemill_contract.bats(and the adapter, if the real parsing depends on the same shape) to the current output.Notes
contract-label gated, so it does not block ordinary CI (compile/test/lint/format/dashboard-build are green on the forge).works.iterativedep (scalatags-webawesome:3.2.1.1) resolves from Maven Central.