Skip to content

πŸ›πŸ§‘β€πŸ’» - bug SDD catalog links discard nested specification directoriesΒ #768

Closed

Description

@efraespada

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

  1. Use the portable validator at revision 972023cff8ece814dd1cd3eb3a3efff43d23ef94, src/infrastructure/specification_catalog_validator.cjs (vendored without modifications in GeckoCV before the consumer correction).
  2. Register a primary SDD specs/group/example.md and a companion specs/group/companion.md in an otherwise valid catalog. Both are safe, regular repository files under the supported specs/ boundary.
  3. Call renderCatalog(catalog).
  4. Inspect the generated primary SDD and Specifications links: they incorrectly use ./example.md and ./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.

Activity

  1. added
    bugSomething isn't working
    bugfixSomething isn't working
    priority: highCritical issue, needs immediate attention.
    on Oct 28, 2026
  2. added theissue type on Oct 28, 2026
  3. moved this to Todo in vypdevon Oct 28, 2026
  4. changed the title [-]bug: SDD catalog links discard nested specification directories[/-] [+]πŸ› - bug SDD catalog links discard nested specification directories[/+] on Oct 28, 2026
  5. vypbot commented on Oct 28, 2026

    @vypbot
    Contributor

    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 help to see the available commands, or mention @vypbot with your question.

  6. moved this from Todo to In Progress in vypdevon Oct 29, 2026
  7. added
    branchedIndicates that a branch has been created for this issue.
    on Oct 29, 2026
  8. changed the title [-]πŸ› - bug SDD catalog links discard nested specification directories[/-] [+]πŸ›πŸ§‘β€πŸ’» - bug SDD catalog links discard nested specification directories[/+] on Oct 29, 2026
  9. added
    state:workingWork can proceed on the verified branch or without a branch.
    on Oct 29, 2026
  10. vypbot commented on Oct 29, 2026

    @vypbot
    Contributor

    Implementation plan

    Current status: Ready to start. No action is required from maintainers before implementation.

    1. Preserve specification paths in both renderers
      • In src/infrastructure/specification_catalog_validator.cjs, derive catalog-relative links from the path after specs/ for primary and companion specifications.
      • Keep root-level specification links unchanged and non-specification evidence links repository-relative with ../.
    2. Add focused renderer regression fixtures
      • Extend src/tooling/__tests__/portable_specification_catalog.test.ts with nested primary and companion specifications, including duplicate basenames in different directories.
      • Assert both the primary SDD table and evidence map retain nested paths and that each rendered target exists.
    3. Retain existing catalog behavior
      • Cover root-level specifications and non-specification evidence links to guard their current link formats.
      • Keep validation and recursive discovery behavior intact.
    4. Run catalog checks and review generated output
      • Run the focused portable catalog tests and pnpm run validate:specifications.
      • Regenerate specs/CATALOG.md with pnpm run generate:specifications if the rendered catalog output needs updating.

    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.

  11. added
    size: LIndicates a large-sized task or issue that requires significant effort and time.
    75%Progress: 75%
    and removed on Oct 29, 2026
  12. vypbot commented on Oct 29, 2026

    @vypbot
    Contributor

    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)

    Progress: 75% β€” in progress

    > Current status: [R1] 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. β€” The renderer changes preserve the path after specs/ for primary and evidence-map specification links, including nested paths. Root-level specifications retain their existing target format, and non-specification evidence remains repository-relative.
    [R2] 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. β€” The upstream renderer is changed, and regression fixtures cover nested specifications, companions, duplicate basenames, and link targets. GeckoCV’s granular layout is preserved; the issue does not require a consumer release.
    [R3] 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
    [untrusted content truncated]

    Next: [R4] "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." β€” Provide independent execution evidence that the regression tests pass for nested primary and companion links in both catalog sections, including duplicate basenames, and that root-level and non-specification link formats remain correct.

  13. linked a pull request that will close this issuefix: preserve nested SDD catalog links #780on Oct 29, 2026
  14. moved this from In Progress to Done in vypdevon Oct 29, 2026
  15. added
    100%Progress: 100%
    and removed
    in-progressStart work on an admitted issue.
    state:workingWork can proceed on the verified branch or without a branch.
    on Oct 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

100%Progress: 100%branchedIndicates that a branch has been created for this issue.bugSomething isn't workingbugfixSomething isn't workingpriority: highCritical issue, needs immediate attention.size: LIndicates a large-sized task or issue that requires significant effort and time.

Type

Projects

  • Status
    Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions