Skip to content

fix(app-repo): fetch the v2 channels — the parser was being fed a v1 file set - #80

Merged
rubenvdlinde merged 2 commits into
developmentfrom
fix/fetch-v2-channels
Aug 1, 2026
Merged

fix(app-repo): fetch the v2 channels — the parser was being fed a v1 file set#80
rubenvdlinde merged 2 commits into
developmentfrom
fix/fetch-v2-channels

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Caught by round-tripping the real published artefacts, not by tests.

The gap

fetchRepoFiles() only ever fetched the descriptor, manifest and schemas/. The serializer emits data-registers/, connectors/, automations/ and skills/, and the parser knows how to read them — but nothing fetched them. So a v2 repository installed as if it carried nothing but a manifest, and reported success.

repo before after
buildiq-spectr (46 blobs) 2 files → 0 data-registers, 0 connectors 45 files → dataRegisters 1, connector kinds 4
buildiq-hydra (748 blobs, 94 skills) 2 files → 0 skills 746 files → dataRegisters 1, skills 94

This is the third instance of one structural pattern in this workstream: one half of a round trip extended, the other left behind. Publish looked perfect from the publish side every time.

Implementation notes

  • One recursive tree call, not a contents walk per directory — a v2 artefact can carry ~750 blobs, and per-directory listing would multiply round trips before a single file is read
  • Bounded at 2048 files, truncation logged — an install that quietly drops half an app is exactly the failure this format exists to prevent
  • Paths containing .. are skipped; the parser re-validates independently

Verification

  • 737 tests green · phpcs 0 · 40/40 hydra gates green
  • Round trip re-run against the live private artefacts, results in the table above

…file set

fetchRepoFiles() only ever fetched the descriptor, manifest and schemas/. The
serializer emits data-registers/, connectors/, automations/ and skills/, and the
parser knows how to read them — but nothing fetched them, so a v2 repository
installed as if it carried nothing but a manifest, and reported success.

Caught by round-tripping the real published artefacts, not by tests:

  buildiq-spectr  fetched  2 files -> 0 data-registers, 0 connectors
                  (the repository holds 46 blobs)
  buildiq-hydra   fetched  2 files -> 0 skills
                  (the repository holds 748 blobs, 94 skills)

After the fix:

  buildiq-spectr  45 files -> dataRegisters 1, connector kinds 4
  buildiq-hydra  746 files -> dataRegisters 1, skills 94

Uses ONE recursive tree call rather than a contents walk per directory: a v2
artefact can carry ~750 blobs and per-directory listing would multiply round
trips before a single file is read. Bounded at 2048 with truncation LOGGED — an
install that quietly drops half an app is the exact failure this format exists
to prevent.
@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openbuild @ 63d2195

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 659/659
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-08-01 19:13 UTC

Download the full PDF report from the workflow artifacts.

… shape

phpstan level 5 rejects reading $connectors['missingCount'] at line 185 because
the annotation never declared it — although both the real return and the $empty
early-return have always contained it. The docblock was the thing that was wrong.

Pre-existing on development, not introduced here: this PR touches only
GitHubCatalogService. It surfaced because openbuild has no vendor/ checked out,
so the local gate suite never runs phpstan and CI is the first place it fires.
@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openbuild @ d0a9682

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 659/659
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 89.4% (17/19 statements)


Quality workflow — 2026-08-01 19:21 UTC

Download the full PDF report from the workflow artifacts.

@rubenvdlinde
rubenvdlinde merged commit 8c0cbce into development Aug 1, 2026
30 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants