Repository navigation
Description
Is there an existing issue for this?
- I have searched the existing issues.
Which actions are affected?
Pull Request
Which platforms are affected?
macOS, Linux
Description
The portable SDD catalog validator accepts and recursively discovers nested specification files, but renderCatalog and renderPathLinks reduce specification links to path.posix.basename. For specs/group/example.md, the generated catalog points at ./example.md instead of ./group/example.md. Both the primary SDD table and the evidence map are affected. A second file with the same basename can make the link silently point at the wrong contract.
This was found by the Copilot review of vypdev/geckocv#32. Please fix the upstream renderer and add regression coverage; GeckoCV must retain granular specifications and must not flatten their layout to accommodate this defect.
Reproducing the issue
- Use the portable validator at revision
972023cff8ece814dd1cd3eb3a3efff43d23ef94,src/infrastructure/specification_catalog_validator.cjs(vendored without modifications in GeckoCV before the consumer correction). - Register a primary SDD
specs/group/example.mdand a companionspecs/group/companion.mdin an otherwise valid catalog. Both are safe, regular repository files under the supportedspecs/boundary. - Call
renderCatalog(catalog). - Inspect the generated primary SDD and Specifications links: they incorrectly use
./example.mdand./companion.md.
Expected: preserve the full path after specs/ in every catalog-relative specification link, including companion links. Root-level specs must remain unchanged, and non-spec evidence must keep its repository-relative ../ target. Include same-basename fixtures and a rendered-link existence assertion.
copilot Version
Portable validator pinned at 972023cff8ece814dd1cd3eb3a3efff43d23ef94; consumer Action currently uses v3 (3.10.5). The defect is in the pinned portable renderer, not a demonstrated newly introduced Action runtime regression.
Relevant Log Output
No credentials or private runtime data are involved. Failing links are deterministic text output.
Additional context and comments
Consumer review: https://github.com/vypdev/geckocv/pull/32#discussion_r4404481753
Consumer correction will document any local vendor patch and preserve the upstream MIT notice and original pin until an upstream revision can be adopted through review. No upstream implementation or release is requested from this contributor; this issue is for the Copilot team.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
Activity
[-]bug: SDD catalog links discard nested specification directories[/-][+]π - bug SDD catalog links discard nested specification directories[/+]vypbot commentedon Oct 28, 2026
Hi! Iβm @vypbot, the Copilot assistant for this repository.
I can answer questions, explain the codebase, propose implementation and test plans, review issues and pull requests for potential bugs or security problems, and help authorized maintainers apply changes.
Try
/copilot helpto see the available commands, or mention @vypbot with your question.[-]π - bug SDD catalog links discard nested specification directories[/-][+]ππ§βπ» - bug SDD catalog links discard nested specification directories[/+]vypbot commentedon Oct 29, 2026
Implementation plan
Acceptance: Regression tests confirm that nested primary and companion specification links in both the table and evidence map preserve their paths after specs/, resolve to existing files despite duplicate basenames, while root-level links and non-specification ../ evidence links retain their existing formats.
Need something else? Mention the bot with a question or use
/copilot help.vypbot commentedon Oct 29, 2026
Issue closed β historical progress
Current status: closed as completed.
The last estimate is retained below as history. Closure does not certify a new percentage, tests, or branch alignment.
Action required: none for this closed issue. If work continues, reopen the issue; a fresh assessment can update this same card.
Last assessment before closure (historical)