no-artifact with no hint when story specs live in a subfolder (non-recursive artifact glob)
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 76/100
Research direction
Start in adapters/generic.py at _capture_launch_auto_run_results and the _artifact_dirs loop around line 1410; trace how the non-recursive *.md search produces the no-artifact breadcrumb. Reproduce with a story spec in implementation-artifacts/stories/ and verify the resulting Stop message or artifact discovery clearly handles that layout without regressing the flat layout.
Written by the indexing model from the issue text.
Description
Description
When SessionSpec.expected_spec is not set, _capture_launch_auto_run_results (and the harvest that follows) finds result specs with a non-recursive glob:
# adapters/generic.py:1410 (0.11.1, unchanged on main)
for artifacts in self._artifact_dirs(spec.cwd):
paths.extend(artifacts.glob("*.md"))
A project that keeps story specs one level down (e.g. _bmad-output/implementation-artifacts/stories/<key>.md) gets no-artifact on every Stop, with nothing in the message saying which directory was searched or that subfolders are not.
This is a different path from #224 (spec present but missing its ## Auto Run Result marker). Here the spec is complete; it is just not in the directory the glob looks at.
Steps to reproduce
- Put a story spec under
implementation-artifacts/stories/instead of directly inimplementation-artifacts/. - Run a story where
expected_specis not set. - Every Stop reports
no-artifact; the session rides to timeout.
Moving the spec directly under implementation-artifacts/ makes the same run succeed.
Suggested fix
Either of these would have saved a long debugging session:
- search recursively (
rglob("*.md")), or - keep the non-recursive glob but name the searched directory in the
no-artifactbreadcrumb, e.g.no-artifact: no *.md directly under <dir> (subfolders are not searched).
The second keeps current behaviour and only makes the failure self-explaining, if the flat layout is intentional.
Environment
Windows 11, bmad-loop 0.11.1 (uv tool), claude adapter, BMAD v6.12.0.
- Dominant language
- Python
- Stars
- 137
- Forks
- 60
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 45
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from bmad-code-org/bmad-loop
-
area:engine bug P3
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
bmad-code-org/bmad-loop#723 ·
-
Re-cut test_merge_stray_dirt_escalates_with_clear_message to pin the hazard-first refusal lead-in Openarea:engine bug P3
Difficulty 2/5 1-3 hours Newbie friendliness 87/100
bmad-code-org/bmad-loop#683 ·
-
area:adapters area:psmux bug P4
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
bmad-code-org/bmad-loop#673 · 7 comments · 1 reaction ·
-
area:tui enhancement P4
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
bmad-code-org/bmad-loop#666 · 1 comment · 1 reaction ·
-
bug P4
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
bmad-code-org/bmad-loop#665 · 2 comments · 1 reaction ·
All issues in bmad-code-org/bmad-loop
Similar issues
-
documentation help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
simonw/sqlite-utils#872 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100