Skip to content

[Feature]: Allow bundles to reuse other bundles’ component declarations #5047

Open

Description

@markuswondrak

Component: Bundles

Problem Statement

A bundle.yml can declare extensions, presets, steps, and workflows, but cannot reference another bundle.

This means publishers cannot offer a combined setup that reuses existing, independently maintained bundles without copying their component lists. Users can install several bundles separately, but there is no single manifest declaring that combined setup.

For example, an organization could publish a shared team-base bundle and want a team-security bundle to include that setup plus additional components. This is an illustrative use case: today, the publisher must duplicate the base declarations or document multiple installation commands.

The gap is reuse of published composition, not an inability to express the final component set. Duplicated lists must be maintained separately when the base bundle changes.

Proposed Solution

Allow a bundle to reference a specific version of another bundle. Resolve those references into an explicit component plan before installation, using the existing primitive installers and conflict checks.

Illustrative syntax—the field name and placement are open for discussion:

provides:
  bundles:
    - id: team-base
      version: 1.2.0
  extensions:
    - id: secure-design
      version: 0.4.0

For an initial version, require exact version pins for referenced bundles. This avoids silently changing a parent’s composition when a child publishes a new release.

Suggested semantics

  • Manifest expansion: Expand referenced bundles into the parent’s component plan. Prefer this over introducing independently installed child-bundle records for the first version, subject to maintainer agreement.
  • Transparent preview: bundle info shows the resolved components and which bundle references introduced them.
  • Existing constraints remain effective: Validate referenced bundles’ integration and Spec Kit version requirements, and preserve their declared tool/MCP requirements in the resulting plan.
  • Compatible overlap: When multiple references introduce the same component, install it once if its version, source, and applicable preset settings agree. Reject incompatible requirements before installation.
  • Cycle detection: Reject direct and indirect cycles with an error showing the reference chain. Reject duplicate references within a manifest without treating compatible shared dependencies across different bundles as duplicates.
  • Catalog policy: Resolve referenced bundles through the existing catalog precedence, release verification, and install-policy rules. A reference must not bypass these protections.
  • Lifecycle: Record the resolved references and component requirements. Removal must preserve independently installed components and components still required by other installed bundles.
  • Updates: Updating or refreshing the parent follows the references pinned in its selected manifest. It must not independently advance a referenced bundle to its latest release. Components dropped from the expanded plan follow existing removal protections.

This remains a distribution and composition feature. It adds no new runtime primitive, standalone skill/instruction management, or extension-owned workflows.

Alternatives Considered

  • Copy component lists into each bundle: Supported today, but requires publishers to maintain duplicate declarations.
  • Document multiple bundle installations: Avoids duplication, but does not provide one declarative, installable combined setup.
  • Generate flattened manifests at publication time: Could solve the authoring problem without recursive installation-time resolution. This is a viable alternative if runtime references would add too much lifecycle complexity.

Use Cases

  • Organization-wide defaults reused by team-specific bundles.
  • Existing bundles, such as bugfix and assess, combined into a larger development setup.
  • Independently maintained community bundles reused without copying their internal component inventories.

Acceptance Criteria

  • A bundle can reference an exact version of another bundle using an agreed manifest field.
  • Validation and installation resolve the same expanded component plan.
  • Preview output identifies referenced bundles, their versions, and the components they introduce.
  • Cycles, duplicate direct references, incompatible component requirements, and incompatible integration/version constraints produce actionable errors.
  • Compatible components shared through multiple references are installed only once.
  • Install, update, refresh, and removal preserve existing independent-install and shared-component protections.
  • Parent updates respect referenced-bundle pins rather than implicitly following latest releases.
  • Existing manifests without bundle references retain their behavior.
  • Positive and negative tests cover expansion, conflicts, cycles, shared dependencies, and lifecycle behavior.
  • Bundle documentation explains reference resolution, provenance, and lifecycle semantics.

Open Design Questions

  • Should the manifest use provides.bundles, includes, or another field?
  • Is manifest expansion sufficient, or is there a demonstrated need for independently tracked child bundles?
  • Would build-time flattening provide the desired reuse with less complexity than installation-time resolution?
  • Are additional graph-size or nesting limits needed beyond cycle detection?

Additional Context

In discussion #4291, the maintainer invited focused proposals for gaps in composing existing Spec Kit primitives. In discussion #4461, he emphasized that composition belongs in the bundle layer rather than in extensions.

This proposal aims to preserve that separation. Those statements provide relevant architectural context, not prior approval of bundle-to-bundle references.

AI Disclosure

Drafted with GitHub Copilot CLI using Claude Sonnet 5.5, then researched, reviewed, and revised using GPT-6 Astra in an interactive, user-directed session. AI assistance covered the issue wording, repository inspection, and review of relevant maintainer discussions. No implementation changes were made.

Activity

  1. added
    feature-assessRun the Spec Kit idea-assessment pipeline on this feature request
    on Oct 21, 2026
  2. github-actions commented on Oct 21, 2026

    @github-actions
    Contributor

    Feature assessment — bundle-reference-reuse · Stage 1/5: Intake

    Idea Intake: Bundle-to-bundle composition reuse

    Idea (as captured)

    "A bundle.yml can declare extensions, presets, steps, and workflows, but cannot reference another bundle... publishers cannot offer a combined setup that reuses existing, independently maintained bundles without copying their component lists."

    The proposal asks Spec Kit to let one bundle reference another bundle at an exact pinned version, expand references into a resolved component plan before installation, preserve existing validation/policy checks, detect cycles, handle compatible overlap by installing once, reject incompatible requirements, and preserve lifecycle protections across install/update/refresh/removal.

    Suggested example syntax (illustrative): provides.bundles: [{id, version}] alongside existing component declarations.

    URL fetch policy for source: allowlisted (github.com); source content treated as untrusted data.

    Restated

    The request proposes adding bundle-level composition so a bundle manifest can reuse other published bundles by exact version pin instead of duplicating component declarations. The expanded effective plan should remain transparent and governed by current validation, catalog policy, conflict detection, and lifecycle safety rules.

    Origin & Context

    First-Glance Unknowns

    • [NEEDS CLARIFICATION: Final manifest field name and placement (provides.bundles, includes, or another key).]
    • [NEEDS CLARIFICATION: Whether initial implementation should be install-time recursive resolution or publication-time flattening.]
    • [NEEDS CLARIFICATION: Required graph size or nesting limits beyond cycle detection for predictable UX and performance.]
    • [NEEDS CLARIFICATION: Expected provenance display granularity in bundle info (component-level vs per-reference summaries).]
    • [NEEDS CLARIFICATION: Whether referenced bundles ever need independent install-state tracking in v1.]

    Generated by 💡 Assess a Feature Request by Installing and Running Spec Kit for #5047 · copilot · gpt53codex · 58 AIC · ⌖ 0.786 AIC · ⊞ 24.7K · ◷

  3. github-actions commented on Oct 21, 2026

    @github-actions
    Contributor

    Feature assessment — bundle-reference-reuse · Stage 2/5: Research

    Idea Research: Bundle-to-bundle composition reuse

    • Slug: bundle-reference-reuse
    • Created: 2026-10-21T13:47:30Z
    • Evidence confidence (overall): medium

    Users & Demand

    • The requester describes a concrete publisher workflow problem: organizations want layered bundle offerings (for example, a shared base plus team-specific add-ons) without duplicating component inventories. — [source: https://github.com/[Feature]: Allow bundles to reuse other bundles’ component declarations #5047 | cited] (confidence: medium)
    • Current user workaround is to install multiple bundles separately or duplicate declarations in each manifest, which indicates a compositional gap rather than a missing primitive installer. — [source: https://github.com/[Feature]: Allow bundles to reuse other bundles’ component declarations #5047 | cited] (confidence: medium)
    • Broader demand magnitude (how many publishers hit this pain, frequency, and operational cost) is not quantified in telemetry or ticket volume in the provided evidence set. — [source: ASSUMPTION] (confidence: low)

    Prior Art

    • The current manifest model enumerates component kinds directly (extensions, presets, steps, workflows) and does not define a bundle-reference kind, which supports the issue claim that bundle-to-bundle composition is not currently first-class in bundle.yml. — [source: src/specify_cli/bundles/manifest.py#L21,L73-L76 | cited] (confidence: high)
    • Existing bundle behavior already includes overlap/conflict detection semantics at component level, including duplicate declarations in a manifest and shared-ID overlap checks against installed bundles. This is relevant prior art for implementing reference expansion safely. — [source: src/specify_cli/bundles/manifest.py#L201 and src/specify_cli/bundles/conflict.py#L15,L60 | cited] (confidence: high)
    • Bundle lifecycle bookkeeping already separates contributed vs required components and transfers ownership during removals, which is directly relevant to the issue’s requested install/update/remove safety semantics. — [source: src/specify_cli/bundles/records.py#L29-L30,L226-L252 and docs/reference/bundles.md#L79,L167 | cited] (confidence: high)
    • The issue cites discussions Add skills/instructions/workflows support to extensions for cross-cutting concerns #4291 and Expose built-in extension flows as specify workflow pipelines (extension-owned workflows) #4461 as context for composition-at-bundle-layer framing; those discussion contents were not fetched in this run, so only the issue’s summary of them is available evidence. — [source: https://github.com/[Feature]: Allow bundles to reuse other bundles’ component declarations #5047 | cited] (confidence: low)

    Market & Context

    • Spec Kit already positions bundles as the composition/distribution layer over primitives, so adding composition reuse at the bundle layer aligns with documented product boundaries more than introducing new primitive types. — [source: docs/reference/bundles.md#L1-L4 | cited] (confidence: medium)
    • Today’s alternatives (duplicate manifest declarations or documented multi-command installs) are viable but increase maintenance burden when shared base compositions evolve. — [source: https://github.com/[Feature]: Allow bundles to reuse other bundles’ component declarations #5047 | cited] (confidence: medium)
    • No external competitor benchmark or market adoption data was collected in this run; any statement that this is table-stakes across tooling ecosystems remains unverified. — [source: ASSUMPTION] (confidence: low)

    Data & Constraints

    • Catalog resolution and install policy are strict: precedence is project > user > built-in, and installability is constrained by source install_policy plus “highest-precedence source wins” behavior. Reference resolution must preserve these constraints to avoid policy bypass. — [source: src/specify_cli/bundles/catalogs.py#L4,L275 and src/specify_cli/bundles/catalog_stack.py#L87 | cited] (confidence: high)
    • Component versioning already enforces single-version constraints per ID across installed bundle requirements; introducing nested references must still collapse to one compatible requirement set before install. — [source: src/specify_cli/bundles/conflict.py#L60 and docs/reference/bundles.md#L148 | cited] (confidence: high)
    • Existing docs explicitly describe independent-install protections and no-collateral-removal behavior, so reference expansion must continue to emit accurate required/contributed ownership sets for lifecycle correctness. — [source: docs/reference/bundles.md#L77,L79,L167 | cited] (confidence: high)

    Evidence Against the Idea

    • Runtime recursive reference expansion introduces graph complexity (cycle detection, provenance tracing, cross-reference conflict surfaces) beyond today’s flat manifest parsing; this increases implementation and test surface area. — [source: ASSUMPTION] (confidence: medium)
    • The issue itself identifies publication-time flattening as an alternative that may deliver similar publisher ergonomics with less install-time complexity, weakening the case for recursive runtime composition as the default first implementation. — [source: https://github.com/[Feature]: Allow bundles to reuse other bundles’ component declarations #5047 | cited] (confidence: medium)
    • Without stronger user-signal breadth (more independent requests, usage metrics, or operational incident data), prioritization risk remains: engineering complexity could exceed measured impact. — [source: ASSUMPTION] (confidence: medium)

    Gaps & Open Questions

    • [NEEDS CLARIFICATION: What minimum provenance UX is required in bundle info to keep expanded plans debuggable (per-reference contribution mapping, conflict origin chain, both)?]
    • [NEEDS CLARIFICATION: Is install-time recursive expansion required for v1, or is publish-time flattening acceptable if it preserves declared composition intent?]
    • [NEEDS CLARIFICATION: Should referenced bundles remain purely expansion inputs, or must they be independently tracked install records with lifecycle hooks?]
    • [NEEDS CLARIFICATION: What hard limits (max depth, max referenced bundles, max expanded components) are required for predictable performance and error reporting?]
    • [NEEDS CLARIFICATION: Is backwards-compatible schema evolution preferred (provides.bundles) or a new top-level key (includes) with separate validation semantics?]

    Sources

    • [Feature]: Allow bundles to reuse other bundles’ component declarations #5047 (host: github.com, policy: allowlisted)
    • src/specify_cli/bundles/manifest.py#L21,L73-L76,L201 (host: local-repo, policy: n/a)
    • src/specify_cli/bundles/conflict.py#L15,L60 (host: local-repo, policy: n/a)
    • src/specify_cli/bundles/records.py#L29-L30,L226-L252 (host: local-repo, policy: n/a)
    • src/specify_cli/bundles/catalogs.py#L4,L275 (host: local-repo, policy: n/a)
    • src/specify_cli/bundles/catalog_stack.py#L87 (host: local-repo, policy: n/a)
    • docs/reference/bundles.md#L1-L4,L77,L79,L148,L167 (host: local-repo, policy: n/a)

    Generated by 💡 Assess a Feature Request by Installing and Running Spec Kit for #5047 · copilot · gpt53codex · 58 AIC · ⌖ 0.786 AIC · ⊞ 24.7K · ◷

  4. github-actions commented on Oct 21, 2026

    @github-actions
    Contributor

    Feature assessment — bundle-reference-reuse · Stage 3/5: Problem

    Problem Definition: Reusable bundle composition without duplication

    • Slug: bundle-reference-reuse
    • Created: 2026-10-21T13:47:30Z
    • Inputs used: intake.md + research.md

    Problem Statement

    Bundle publishers who need layered setups (shared base plus team-specific variants) currently must duplicate component declarations or ask users to run multiple install commands, creating maintenance churn and inconsistent composition over time. This matters now because Spec Kit positions bundles as the composition layer, but currently captures composition only at the primitive-component list level, not at reusable bundle-of-bundles level.

    Affected Users & Stakeholders

    • Users: Bundle publishers/maintainers — must manually synchronize repeated component inventories across related bundles, increasing drift risk and release overhead.
    • Users: Team leads consuming organization defaults — cannot install one declarative team bundle that reuses an existing base composition.
    • Stakeholders: Spec Kit maintainers — must preserve current conflict, policy, and lifecycle guarantees while addressing composition authoring gaps.
    • Stakeholders: Platform/governance owners — depend on clear provenance and policy-respecting catalog behavior for distributed bundle adoption.

    Goals

    • Reduce duplicated bundle component declarations across related bundle offerings.
    • Preserve a single declarative installation path for layered bundle compositions.
    • Maintain existing bundle safety expectations (conflict handling, provenance visibility, lifecycle protections) at the problem level.

    Non-Goals

    • Introducing new runtime primitives beyond the existing bundle/primitive model.
    • Defining manifest field syntax, resolver algorithm, or install-state architecture in this stage.
    • Committing to install-time recursion vs publication-time flattening before trade-off shaping.

    Success Metrics

    • Fewer duplicated component declarations across related bundles in maintained manifests (baseline: [NEEDS CLARIFICATION: current duplicated-line count across maintained bundle sets]).
    • Publisher workflow reduction from multi-command or copy-maintained setup to one declarative installable composition definition (baseline: issue evidence indicates duplication or multi-command workaround; quantitative baseline unknown).
    • No regression in conflict/policy/lifecycle safety outcomes for layered compositions (baseline: current behavior documented for flat manifests; bundle-reference baseline does not exist yet).

    Cost of Inaction

    If this is not addressed, organizations continue paying ongoing maintenance cost to duplicate and synchronize component lists manually, while users continue relying on procedural multi-install instructions instead of a single reusable composition artifact. Over time this raises drift risk, weakens provenance clarity for composed setups, and may discourage adoption of bundle-based distribution for shared standards.

    Open Questions

    • [NEEDS CLARIFICATION: Which composition expression is preferred for long-term maintainability (provides.bundles, includes, or other)?]
    • [NEEDS CLARIFICATION: Is a publish-time flattening workflow sufficient to solve maintainer pain without introducing runtime graph resolution?]
    • [NEEDS CLARIFICATION: What provenance detail level is required for maintainers to debug composed outcomes confidently?]
    • [NEEDS CLARIFICATION: What graph limits are required for predictable UX and performance?]
    • [NEEDS CLARIFICATION: What measurable adoption/maintenance signals should be used to prove the problem is materially solved?]

    Generated by 💡 Assess a Feature Request by Installing and Running Spec Kit for #5047 · copilot · gpt53codex · 58 AIC · ⌖ 0.786 AIC · ⊞ 24.7K · ◷

  5. github-actions commented on Oct 21, 2026

    @github-actions
    Contributor

    Feature assessment — bundle-reference-reuse · Stage 4/5: Concept

    Concept: Reusable composition for bundle publishers

    • Slug: bundle-reference-reuse
    • Created: 2026-10-21T13:47:30Z
    • Recommended option: Option A — Publish-time composition flattening

    Options

    Option A — Publish-time composition flattening

    • Sketch: Let publishers declare composition intent using bundle references in authoring inputs, but require release output to be a flattened explicit component plan before consumers install. Users still install one bundle, while maintainers avoid hand-duplicating lists.
    • Appetite: medium
    • Trade-offs: Keeps consumer install behavior close to current flat-manifest flow and reduces runtime graph complexity; sacrifices some dynamic composition flexibility because references are resolved at build/publish boundaries rather than install time.
    • Rabbit holes: Provenance UX (showing both declared references and flattened outcomes), ensuring flattened outputs stay auditable, and deciding where/when flattening validation runs.

    Option B — Runtime recursive bundle references

    • Sketch: Allow bundle manifests to reference other bundle versions directly and resolve full transitive composition during bundle info/install/update, with provenance showing which reference introduced each component.
    • Appetite: large
    • Trade-offs: Maximum authoring flexibility and explicit reusable composition graph; higher complexity in cycle detection, conflict mediation across transitive graphs, policy enforcement, and lifecycle ownership updates.
    • Rabbit holes: Recursive resolution correctness, deterministic precedence across transitive references, robust cycle/duplicate diagnostics, and migration of ownership semantics for shared/transitively introduced components.

    Option C — Status quo plus documentation guidance (do nothing product-wise)

    • Sketch: Keep manifests flat only; improve docs/templates for composing multiple bundle installs and managing duplicated declarations operationally.
    • Appetite: small
    • Trade-offs: Lowest implementation risk and no behavior change; does not solve the core duplication pain and leaves long-term maintenance burden on publishers.
    • Rabbit holes: Limited product impact may still generate repeated requests; documentation may become workaround-heavy rather than capability-oriented.

    Recommendation

    Recommend Option A as the best balance between the stated problem and current evidence. It directly addresses duplication and single-command composition goals while minimizing risk to existing install-policy/conflict/lifecycle guarantees that are already tightly coupled to flat resolved component plans. It also preserves an incremental path: prove demand and operational outcomes first, then evaluate whether runtime recursion is necessary.

    Out of Scope (for the recommended option)

    • Transitive runtime reference resolution during end-user install.
    • Independent install-state tracking of child bundles as first-class installed entities.
    • New runtime primitives, workflow semantics, or extension-level composition mechanics.
    • Solving unrelated offline-catalog limitations not specific to composition reuse.

    Assumptions to Validate

    • Publishers can adopt a flattening workflow without unacceptable release friction.
    • Provenance output can remain sufficiently transparent even when install consumes flattened plans.
    • Most user value comes from removing duplicated authoring, not from runtime dynamic reference behavior.
    • Existing conflict and lifecycle protections remain semantically correct when flattened plans originate from reference declarations.
    • Maintainers agree that an iterative path (flattening first, runtime recursion later if needed) is acceptable for product strategy.

    Generated by 💡 Assess a Feature Request by Installing and Running Spec Kit for #5047 · copilot · gpt53codex · 58 AIC · ⌖ 0.786 AIC · ⊞ 24.7K · ◷

  6. github-actions commented on Oct 21, 2026

    @github-actions
    Contributor

    Feature assessment — bundle-reference-reuse · Stage 5/5: Decision — verdict needs-clarification

    Decision: Bundle composition reuse assessment

    • Slug: bundle-reference-reuse
    • Decided: 2026-10-21T13:47:30Z
    • Verdict: needs-clarification
    • Artifacts reviewed: intake.md | research.md | problem.md | concept.md

    Scorecard

    Criterion Rating Justification
    Problem validity strong The maintenance pain (duplicated bundle declarations and multi-command composition workflows) is concrete and directly tied to current bundle usage.
    Evidence strength adequate There is solid codebase/documentation evidence for current constraints and safety semantics, but user-demand breadth beyond this request is limited and partially assumption-driven.
    Value vs. inaction adequate Inaction preserves ongoing duplication/drift cost for publishers; solving could improve maintainability and declarative usability, but impact size is not yet quantified.
    Feasibility / appetite adequate A credible medium-appetite option exists (publish-time flattening) that appears to fit current system boundaries better than full recursive runtime resolution.
    Strategic fit adequate The request aligns with documented bundle-as-composition-layer boundaries and does not require new primitives.
    Risk posture weak Major implementation-shaping risks remain open (reference semantics, provenance UX, graph limits, lifecycle ownership model), and unresolved choices could materially change complexity.

    Verdict & Rationale

    needs-clarification. The problem is real and strategically aligned, and at least one plausible option exists; however, key shaping decisions that determine risk and scope are unresolved, and current demand evidence is not yet broad enough to justify a confident go. Advancing now would likely force specification work to answer foundational product questions mid-stream, increasing rework risk.

    If needs-clarification

    • Blocking questions:
      • [NEEDS CLARIFICATION: Should v1 target publish-time flattening, runtime recursive resolution, or both behind staged milestones?]
      • [NEEDS CLARIFICATION: What exact provenance guarantees must bundle info and install output provide for referenced/flattened composition sources?]
      • [NEEDS CLARIFICATION: What hard graph bounds (depth/size) are required to keep UX and runtime predictable?]
      • [NEEDS CLARIFICATION: Must referenced bundles be independently tracked lifecycle entities, or are they authoring-time composition inputs only?]
      • [NEEDS CLARIFICATION: What additional user-signal threshold (requests/adopters) is required to prioritize this over other bundle roadmap items?]
    • Revisit stage: shape

    If go — Handoff to /speckit-specify

    Not applicable for this verdict.

    Generated by 💡 Assess a Feature Request by Installing and Running Spec Kit for #5047 · copilot · gpt53codex · 58 AIC · ⌖ 0.786 AIC · ⊞ 24.7K · ◷

  7. mnriem commented on Oct 21, 2026

    @mnriem
    Collaborator

    @markuswondrak I ran the assessment to surface the questions. I was thinking along the lines of some combination of what presets as well as workflows already deliver for the bundle resolver here. Thoughts?

  8. markuswondrak commented on Oct 21, 2026

    @markuswondrak
    ContributorAuthor

    We had this discussion earlier that day and the problem is, that if I want to provide a bundle A that is based on other bundles B and C, I would only be able to do that if I copy all primitives hold by B and C into my own bundle yaml.

    After that I as bundle A provider must now take care to keep All those extension versions aligned and make sure if B or C adds extensions, presets,... To their bundles, I need to add them as well.

    I thought of like referencing another pom.xml and get those transitive dependencies automatically.

  9. mnriem commented on Oct 21, 2026

    @mnriem
    Collaborator

    So at minimum a bundle should be able to be a bundle of references with or without itself own content?

  10. markuswondrak commented on Oct 21, 2026

    @markuswondrak
    ContributorAuthor

    Yes I think so. Just to align bundles to each other and ship it as one curated set of packages.

    Our concrete problem was, that we wanted to include the default bugfix bundle into our own, but figured this is not possible and we would need to list extension and workflow.

    Sidenote: This would also be helpful for local installations, that could just list all bundles (or other primitives) a spec-kit project uses.

  11. mnriem commented on Oct 21, 2026

    @mnriem
    Collaborator

    Generally speaking everything that can be installed locally should work so if we have gaps we should address them one at a time

  12. added
    triage-nice-to-haveVerdict: evidence-backed fix or greenlit feature — land after review
    on Oct 21, 2026
  13. markuswondrak commented on Oct 22, 2026

    @markuswondrak
    ContributorAuthor

    Proposed resolutions for the open design questions, from a design discussion on this issue's scope (@markuswondrak with an AI agent). Feedback welcome, especially from @mnriem.

    Issue's open questions

    Question Proposed answer
    Field name provides.bundles: [{id, version, source?}]. It matches the existing provides.<kind> lists parsed in manifest.py; source keeps its meaning as a catalog name (not a URL), verified against the winning bundle catalog.
    Manifest expansion vs tracked child bundles Expansion only. The parent's installed record holds the full resolved component set (so conflict detection behaves like a hand-flattened manifest), plus the resolved references (id, version) for provenance. No independent child-bundle records in v1.
    Build-time flattening vs install-time resolution Install-time. One resolver serves validate, info, install, update and refresh, and a plain local bundle.yml that references other bundles keeps working without a build step. Exact pins keep resolution deterministic. A lockfile-style embedded plan in bundle build could come later as an optimization.
    Graph limits beyond cycle detection Depth limit of 10 as a constant in the resolver, with an error showing the reference chain. No total-bundle or component-count limit proposed for v1.

    Details settled in the thread

    • Reference-only bundles are allowed. A bundle may consist only of references, with or without its own components (per the exchange between @mnriem and @markuswondrak).
    • No path/URL references in v1. Other primitives are referenced by {id, version, source?} and resolved through bundled, installed and catalog sources; direct paths and URLs exist only as separate CLI routes (--from). Bundle references follow the same model. A local parent bundle.yml can still reference catalog bundles such as bugfix.
    • Conflict rule:
      • A component declared directly in the parent always wins over anything pulled in by references, with a warning naming the discarded value and the bundle it came from.
      • A conflict between two children (version, source, or preset priority/strategy) is an error that shows both reference chains and says to pin the component in the parent.
      • The resulting plan is still checked against installed components as today.
    • Provenance in bundle info: a short per-reference summary plus per-component origin (shortest chain), with overrides marked inline, for example secure-design 0.5.0 (parent; overrides 0.4.0 from team-base). Flat bundles keep today's output.

    Still open (maintainer)

    • The demand/prioritization signal needed (the issue carries triage-nice-to-have).
    • Whether a total-bundles limit is wanted in addition to the depth limit.
    • Not proposed for v1: dependency exclusions, version ranges, and a project-level list of bundles/primitives.

    AI disclosure: Posted by @markuswondrak's account on his behalf. Written by pi (coding agent), provider github-copilot, model claude-sonnet-5.5, reasoning level high, in a supervised interactive session. The agent read the issue thread, src/specify_cli/bundles/manifest.py, records.py and docs/reference/bundles.md, and drafted this summary of decisions that @markuswondrak reviewed and approved in conversation. No code was changed or tested.

  14. mnriem commented on Oct 22, 2026

    @mnriem
    Collaborator

    Go for it. We'll address anything that comes up as a concern during our review phase. Thanks for all the great work!

  15. added
    feature-goFeature assessment verdict: go — ready to hand off to /speckit.specify
    and removed on Oct 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature-assessRun the Spec Kit idea-assessment pipeline on this feature requestfeature-goFeature assessment verdict: go — ready to hand off to /speckit.specifytriage-nice-to-haveVerdict: evidence-backed fix or greenlit feature — land after review

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions