T-U6ZX-setup-obsidian-backlog-dir-mismatch
Status: closed/superseded · Impact: medium · Complexity: small
Auto-generated from a /sdlc:task-work post-mortem in rust-path-opener
(2026-05-19-obsidian-vault-id-uri). Review and promote to
open/ready before picking up.
/sdlc:setup --obsidian creates the plural entity directory
docs/planning/backlogs/ (consistent with epics/, milestones/,
tasks/) but then writes its Obsidian Bases file into
docs/planning/backlog/backlog.base (singular). The result is two
parallel directories — one with the entity files, one with the
unattached Bases query — and the Bases query points at the wrong
folder anyway. Make the singular-vs-plural naming consistent so the
Bases file lands in the same directory as the entities it filters.
scripts/setup_planning.pydiscovers entity types fromplugin/entities/<type>/schema.json. Forbacklog, the directory is created asdocs/planning/backlogs/(plural — matches the established convention in epics/milestones/tasks). Observed indevrepo:docs/planning/backlog/ANDdocs/planning/backlogs/both exist onmain.- The
--obsidianstep copiesplugin/entities/<type>/base.yamltodocs/planning/<plural>/<plural>.base. For backlog it instead writes todocs/planning/backlog/backlog.base(singular dir, singular filename). Verified inrust-path-opener(docs/planning/backlog/backlog.basewas emitted alongsidedocs/planning/backlogs/). plugin/entities/backlog/base.yaml(the template) hasfile.inFolder("planning/backlog")(singular) baked into its filter, which is inconsistent with the plural entity directory.- This is a recent regression — the
--obsidianflag was added by task2026-05-19-add-obsidian-bases-setup-flag.
Proposed
Section titled “Proposed”/sdlc:setup --obsidian writes exactly one Bases file per entity,
into the same directory the structure step created, with a filter
that points at that same directory. For backlog specifically:
docs/planning/backlogs/backlogs.base containing
file.inFolder("planning/backlogs").
Pick ONE naming convention for backlog (most likely plural to match the other three entity types) and apply it consistently across the script’s output path, the template’s filter, and any other plugin artifacts that hard-code the directory name.
Approach
Section titled “Approach”- Decide singular vs plural for
backlog(recommend plural — it matchesepics/,milestones/,tasks/). - Update
scripts/setup_planning.pyso the Obsidian step writes<plural>/<plural>.basefor every entity, derived from the same plural form used to create the directory. Audit whether the script currently has a hard-coded singular form somewhere or whether the plural form just doesn’t apply tobacklog. - Update
plugin/entities/backlog/base.yamlfilter tofile.inFolder("planning/backlogs"). - Audit other entity
base.yamltemplates for the same singular/plural inconsistency. - Verify against a fresh project:
/sdlc:setup --obsidianshould produce four<plural>/<plural>.basefiles, no orphan dirs.
Files to touch
Section titled “Files to touch”scripts/setup_planning.py— fix the path the Obsidian step writes to so it matches the entity directory the structure step creates.plugin/entities/backlog/base.yaml— change filter tofile.inFolder("planning/backlogs").- Possibly
plugin/entities/backlog/rename to match plural? (Unclear whether the schema discovery keys off directory name or schema contents — investigate during implementation.)
Acceptance criteria
Section titled “Acceptance criteria”- AC-1: Running
/sdlc:setup --obsidianon a fresh project producesdocs/planning/backlogs/backlogs.base(plural), notdocs/planning/backlog/backlog.base. - AC-2: The Bases file’s filter references the same directory it
lives in (
planning/backlogs). - AC-3: Running
/sdlc:setup --obsidian --forceon the dev repo itself overwrites the existing singular paths into the plural form (or a separate cleanup step is documented). - AC-4: No orphan
docs/planning/backlog/(singular) directory remains after a fresh setup run.
Out of scope
Section titled “Out of scope”- Migrating projects that already have content in
docs/planning/backlog/to the plural form. Cleanup of the dev repo’s own duplicate dir is in scope; broader migration tooling is not.
Dependencies
Section titled “Dependencies”- none
Discovery context
Section titled “Discovery context”- Surfaced 2026-05-20 by
/sdlc:task-workrunning2026-05-19-obsidian-vault-id-uriinsksizer/rust-path-opener. The/sdlc:setup --obsidianstep there produceddocs/planning/backlog/backlog.basealongside the structure step’sdocs/planning/backlogs/directory, requiring a manual move- filter edit before continuing.