Skip to content

fix(scaffold): place vendored per-repo reusable workflows under .github/workflows/#2545

Open
fullsend-ai-coder[bot] wants to merge 1 commit into
mainfrom
agent/2544-fix-vendored-per-repo-workflow-paths
Open

fix(scaffold): place vendored per-repo reusable workflows under .github/workflows/#2545
fullsend-ai-coder[bot] wants to merge 1 commit into
mainfrom
agent/2544-fix-vendored-per-repo-workflow-paths

Conversation

@fullsend-ai-coder

Copy link
Copy Markdown
Contributor

GitHub Actions requires local reusable workflow references (paths starting with ./) to resolve under .github/workflows/. Vendored per-repo installs were placing reusable workflows under .fullsend/.github/workflows/ and generating uses: lines pointing there, causing GitHub to reject the workflows.

Fix all three path-generation sites in render.go (reusableWorkflowUses, reusableDispatchUses, and RenderDispatchPerRepoStagePaths) to always produce ./.github/workflows/ paths for vendored installs. Update CollectVendoredAssets to write reusable workflows directly under .github/workflows/ regardless of the per-repo prefix. Update enumerateVendoredPaths so path enumeration and cleanup also use the correct location.


Closes #2544

Post-script verification

  • Branch is not main/master (agent/2544-fix-vendored-per-repo-workflow-paths)
  • Secret scan passed (gitleaks — 0ca2613578a60c30ed7e1ba67d5ea1486fbe4723..HEAD)
  • Pre-commit hooks passed (authoritative run on runner)
  • Tests ran inside sandbox

…ub/workflows/

GitHub Actions requires local reusable workflow references (paths
starting with ./) to resolve under .github/workflows/. Vendored
per-repo installs were placing reusable workflows under
.fullsend/.github/workflows/ and generating uses: lines pointing
there, causing GitHub to reject the workflows.

Fix all three path-generation sites in render.go
(reusableWorkflowUses, reusableDispatchUses, and
RenderDispatchPerRepoStagePaths) to always produce
./.github/workflows/ paths for vendored installs. Update
CollectVendoredAssets to write reusable workflows directly under
.github/workflows/ regardless of the per-repo prefix. Update
enumerateVendoredPaths so path enumeration and cleanup also use the
correct location.

Closes #2544
@github-actions

Copy link
Copy Markdown

E2E tests did not run

E2E tests run automatically for org/repo members and collaborators on pull requests.

For other contributors, a maintainer must add the ok-to-test label after the latest push.

See E2E testing guide for details.

@github-actions

Copy link
Copy Markdown

Site preview

Preview: https://91ddb091-site.fullsend-ai.workers.dev

Commit: 69d0571a29af78f0988d08c635359fcda6e166d9

@fullsend-ai-review

fullsend-ai-review Bot commented Jun 23, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 9:19 AM UTC · Completed 9:32 AM UTC
Commit: 69d0571 · View workflow run →

@codecov

codecov Bot commented Jun 23, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 71.42857% with 2 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
internal/scaffold/vendormanifest.go 50.00% 1 Missing and 1 partial ⚠️

📢 Thoughts on this report? Let us know!

@fullsend-ai-review

Copy link
Copy Markdown

Review

Findings

Medium

  • [unused parameter / dead code] internal/scaffold/vendormanifest.go:158 — After this change, enumerateVendoredPaths(workflowPrefix string) no longer uses the workflowPrefix parameter for reusable workflow paths — it only uses defaultsVendoredPrefix for defaults-infra paths. The parameter is now dead, meaning ManagedVendoredContentPaths(".fullsend/") and ManagedVendoredContentPaths("") return identical results.
    Remediation: Remove the workflowPrefix parameter from enumerateVendoredPaths (and update callers), or document that it is intentionally unused now.

  • [missing test coverage for new code path] internal/scaffold/vendormanifest.go:197 — The diff adds legacy cleanup paths in enumerateLegacyFlatVendoredPaths when workflowPrefix != "", emitting both .github/workflows/<name> and .fullsend/.github/workflows/<name> for cleanup. However, TestLegacyFlatVendoredPaths only tests with workflowPrefix="", so the new branch is untested.
    Remediation: Add a test case that calls LegacyFlatVendoredPaths(".fullsend/") and asserts the result contains both .github/workflows/reusable-triage.yml and .fullsend/.github/workflows/reusable-triage.yml.

  • [stale-identifier-reference] docs/ADRs/0033-per-repo-installation-mode.md:238 — ADR-0033 describes the pre-change layout where per-repo reusable workflows lived under .fullsend/.github/workflows/. After this PR, per-repo reusable workflows are under .github/workflows/ instead. While the mint's job_workflow_ref validation pattern 3 already covers the new path, the ADR's prose description is now outdated and could mislead readers.
    Remediation: Update ADR-0033 to note that per-repo vendored reusable workflows now live under .github/workflows/ rather than .fullsend/.github/workflows/.

Low

  • [unused parameter] internal/scaffold/vendorcontent.go:16CollectVendoredAssets(root, workflowPrefix string) now uses workflowPrefix only as a boolean flag (workflowPrefix == ".fullsend/") since the Path field no longer incorporates it. The parameter semantics have shifted from "path prefix" to "mode selector".

  • [test-assertion-consistency] internal/scaffold/vendorcontent_test.go:46 — Test assertion message uses "must" while the pre-existing test used "should". Minor style inconsistency.


Labels: PR fixes vendored per-repo workflow path generation in internal/scaffold/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component/install CLI install and app setup requires-manual-review Review requires human judgment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Vendored per-repo shim uses invalid local path for reusable workflows

0 participants