Skip to content

Reconcile gemini/kiro bundlers with template's root-level README/LICENSE - #111

Merged
mike-north merged 3 commits into
mainfrom
fix/bundler-root-readme-license-reconcile
Aug 27, 2026
Merged

mike-north merged 3 commits into
mainfrom
fix/bundler-root-readme-license-reconcile

Conversation

@mike-north

Copy link
Copy Markdown
Contributor

Summary

The template repo (ai-plugin-marketplace/template, commit d2d9923) moved README.md/LICENSE
from per-plugin source (plugins/skill-evaluator/README.md) to the repo root, where they are
canonical, author-owned files backing the single emitted Gemini extension / Kiro power. The tools
bundler (bundleGeminiPlugin, bundleKiroPlugin) still copied a plugin's own README.md/LICENSE
into dist/gemini/<plugin>/, dist/kiro/<plugin>/, and the repo-root single-artifact-host
emission — diverging from the template's real output and, for repo-root emission, capable of
tripping the root-artifact-collision guard against the repo's actual root files. This PR stops
copying them and advances the pinned template revision to main HEAD now that the divergence is
gone (issue #86's pinning mechanism is unchanged — only the pinned SHA moves).

Acceptance criteria mapping

  1. Bundler handles the root-level convention via GeneratedFile.target shared-artifact
    ownership, not per-plugin copies
    bundleGeminiPlugin/bundleKiroPlugin
    (packages/core/src/targets/{gemini,kiro}/bundle.ts) no longer include README.md/LICENSE
    in their copied-file set. Root README.md/LICENSE are treated the same way Model shared-artifact ownership in GeneratedFile.target #54's 'shared'
    GeneratedFile.target treats artifacts with no single owning target: they simply already exist
    at the root the single artifact is emitted into, so the bundlers never duplicate or re-home
    them. Covered by the new regression tests bundleGeminiPlugin — emitted paths > does not include README.md/LICENSE even when present in pluginDir and the equivalent
    bundleKiroPlugin — README.md/LICENSE exclusion suite (both fail pre-fix, since the old code
    copied a stray plugin-dir README/LICENSE verbatim).
  2. Parity suites pass against template HEADpackages/core/src/targets/gemini/bundle.test.ts
    and packages/core/src/targets/kiro/bundle.test.ts (describe.skipIf(SKIP_PARITY_SUITE)
    blocks) verified locally against a template checkout at the new pinned SHA (AIPM_TEMPLATE_REPO
    • AIPM_REQUIRE_TEMPLATE=1) — 20/20 passing, positive coverage (not skip).
  3. Pin bumped to template main HEAD in this PR.github/template-repo.rev now pins
    5eeef913ca0da920f07852286c336a03d152bb8e (template main tip). This PR's own CI (check job,
    per Run the gemini/kiro bundle parity suites in CI against a pinned template revision, eliminating the CI-skips-entirely asymmetry #86, AIPM_REQUIRE_TEMPLATE=1) is the end-to-end proof the bump procedure works — see
    CONTRIBUTING.md "Bumping the pinned template revision".
  4. Spec text updateddocs/specs/architecture.md §4 ("Plugin source layout") now documents
    that README.md/LICENSE are optional per-plugin files, never toolkit-generated, never copied
    by the bundlers, and that in a repo emitting a repo-root Gemini/Kiro artifact the root
    README.md/LICENSE back that artifact as pre-existing shared content.

Also updated (required to keep the parity fixture-completeness gate meaningful post-move):
packages/core/src/test-support/template-repo.ts's REQUIRED_SKILL_EVALUATOR_FILES no longer
requires plugins/skill-evaluator/{README.md,LICENSE} (which the template intentionally dropped)
— it now requires the files the bundlers actually still emit
(gemini-extension.json/GEMINI.md/POWER.md/mcp.json), with matching test coverage in
template-repo.test.ts including a regression case for a checkout stuck on the pre-#89
README/LICENSE fixture files.

Verification

  • AIPM_TEMPLATE_REPO=<template checkout at 5eeef91> AIPM_REQUIRE_TEMPLATE=1 pnpm run check
    green (typecheck, lint, api-report, full core+cli test suites, knip, syncpack, format).
  • Default (no AIPM_TEMPLATE_REPO) run also green — the local candidate-resolved checkout still
    runs the parity suites with positive coverage; the describe.skipIf skip path itself is exercised
    by existing template-repo.test.ts unit coverage.
  • pnpm run fix:format — no changes (already formatted).

Non-goals honored

Refs #89

The template repo (commit d2d9923) moved README.md/LICENSE from per-plugin
source to the repo root, where they are canonical, author-owned shared
artifacts backing the single emitted Gemini extension / Kiro power. The
bundlers still copied a plugin's own README.md/LICENSE into dist bundles
and repo-root emission, diverging from the template's real output and
risking a root-artifact-collision against the repo's actual root files.
Stop copying them, update the parity fixture-completeness check to no
longer require them under plugins/skill-evaluator/, and bump the pinned
template revision to main HEAD now that the divergence is gone.

Refs #89

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Aligns the Gemini/Kiro bundlers and parity/fixture checks with the template’s newer convention where README.md/LICENSE are canonical repo-root files (shared, author-owned) rather than per-plugin bundle content, and updates the pinned template revision accordingly.

Changes:

  • Stop copying per-plugin README.md/LICENSE in bundleGeminiPlugin and bundleKiroPlugin, and update parity expectations to match.
  • Update template-checkout completeness probing to require the still-relevant emitted fixture files (and explicitly exclude README.md/LICENSE).
  • Bump .github/template-repo.rev, update architecture spec text, and add a changeset describing the behavior change.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
packages/core/src/test-support/template-repo.ts Updates “complete template checkout” required-file list to match current bundler outputs and excludes README.md/LICENSE.
packages/core/src/test-support/template-repo.test.ts Adds/updates unit coverage for the updated completeness requirements (including the pre-move fixture scenario).
packages/core/src/targets/kiro/bundle.ts Removes README.md/LICENSE from Kiro bundle copied-file set and documents the root-level shared-artifact rationale.
packages/core/src/targets/kiro/bundle.test.ts Updates parity expectations and adds a regression test ensuring README.md/LICENSE are not emitted even if present in pluginDir.
packages/core/src/targets/gemini/bundle.ts Removes README.md/LICENSE from Gemini bundle copied-file set with detailed rationale (template parity + root collision guard).
packages/core/src/targets/gemini/bundle.test.ts Updates emitted-path expectations and adds a regression test for excluding README.md/LICENSE when present in pluginDir.
docs/specs/architecture.md Documents that per-plugin README.md/LICENSE are optional and never copied by bundlers; repo-root files back repo-root emission.
.github/template-repo.rev Advances the pinned template SHA to current main HEAD.
.changeset/reconcile-gemini-kiro-root-readme-license.md Records the bundler behavior change as a patch-level release note for @ai-plugin-marketplace/core.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/core/src/targets/gemini/bundle.test.ts
The regression test built its own scratch plugin directory and never read the
template repo, but sat inside the skipIf(SKIP_PARITY_SUITE) block, so it
disappeared whenever no template checkout was resolvable — precisely when the
parity oracle was also unavailable to catch the regression. Move it to a
top-level describe, matching the Kiro suite's placement for the identical test.
@mike-north
mike-north merged commit 39b08b6 into main Aug 27, 2026
2 checks passed
@mike-north
mike-north deleted the fix/bundler-root-readme-license-reconcile branch August 27, 2026 19:24
@github-actions github-actions Bot mentioned this pull request Aug 27, 2026
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