Skip to content

docs(adr): record ecosystem-enablement and required-LLM-model decisions - #566

Merged
goosewobbler merged 1 commit into
mainfrom
docs/adr-enablement-and-llm-model
Jul 19, 2026
Merged

goosewobbler merged 1 commit into
mainfrom
docs/adr-enablement-and-llm-model

Conversation

@goosewobbler

@goosewobbler goosewobbler commented Jul 19, 2026 •

Copy link
Copy Markdown
Owner

Two ADRs capturing decisions made in the 0.41.0 work that someone will otherwise re-litigate. Kept as a standalone docs PR (rather than folding into #563/#564) to avoid more stacked-rebase churn and to keep the decisions reviewable on their own.

ADR-0004 — Ecosystem enablement: detection enables, config opts out

The durable why behind #554. Every detected ecosystem is versioned and (where publishing is configured and authenticated) published by default; config is only ever an opt-out, with two independent per-ecosystem toggles (version.<eco>.enabled, publish.<eco>.enabled). Records why default-on is safe (the pipeline fails safe structurally) and why the crates.io/pub.dev default flip is an acceptable breaking change. Answers the inevitable "why does cargo publish by default?"

ADR-0005 — Require an explicit LLM model; ship no defaults

The durable why behind #541's pivot. releasekit ships no model ids (they rot — the openai default we nearly shipped, gpt-4o-mini, was already deprecated); llm.model is required and validated at config load, provider is a closed enum, and CLI-assembled configs go through the same schema so misconfig fails loud. Answers the inevitable "let's add model defaults for convenience."

Both follow the existing Nygard format (Context / Decision / Consequences), are indexed in docs/adr/README.md, and link their implementing issues. No code changes.

Greptile Summary

This PR adds two Architecture Decision Records capturing design decisions made during the 0.41.0 release cycle, with no code changes.

  • ADR-0004 records the ecosystem-enablement policy: detection defaults every ecosystem to on (versioning + publishing), with config as opt-out only — replacing the prior asymmetric per-ecosystem defaults that could silently drop packages.
  • ADR-0005 records the decision to require an explicit llm.model and ship zero model-id defaults, because shipped defaults rot as providers deprecate model ids; the ADR also notes that CLI-assembled configs are validated through the same schema so misconfiguration fails loud.

Confidence Score: 5/5

Documentation-only change; no executable code is modified.

Both ADRs follow the existing Nygard format, are correctly numbered and indexed in the README, and accurately describe the design decisions and their trade-offs — including the breaking-change implications of flipping crates.io/pub.dev publish defaults and the UX cost of dropping zero-config Ollama. Nothing here affects runtime behaviour.

No files require special attention.

Important Files Changed

Filename Overview
docs/adr/0004-ecosystem-enablement-detection-enables-config-opts-out.md New ADR documenting the detection-enables / config-opts-out policy for ecosystem publishing; follows Nygard format correctly, clearly explains the safety model and breaking-change implications.
docs/adr/0005-require-an-explicit-llm-model-no-defaults.md New ADR documenting the decision to require llm.model and ship no provider defaults; format and reasoning are sound, consequences section is thorough including the Ollama UX trade-off.
docs/adr/README.md Index updated with correct sequential numbering, matching filenames, and accurate one-line summaries for both new ADRs.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Ecosystem detected] --> B{publish configured\n& authenticated?}
    B -- Yes --> C[version.eco.enabled\ndefault: true]
    B -- No --> D[no-op / skip at auth check]
    C -- false --> E[Skip versioning\nand publishing]
    C -- true --> F[Version manifests]
    F --> G{publish.eco.enabled\ndefault: true}
    G -- false --> H[Version & tag only\ne.g. publish elsewhere]
    G -- true --> I[Publish to registry]

    style E fill:#f9c,stroke:#c66
    style H fill:#ffc,stroke:#aa0
    style I fill:#cfc,stroke:#060
    style D fill:#eee,stroke:#999
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[Ecosystem detected] --> B{publish configured\n& authenticated?}
    B -- Yes --> C[version.eco.enabled\ndefault: true]
    B -- No --> D[no-op / skip at auth check]
    C -- false --> E[Skip versioning\nand publishing]
    C -- true --> F[Version manifests]
    F --> G{publish.eco.enabled\ndefault: true}
    G -- false --> H[Version & tag only\ne.g. publish elsewhere]
    G -- true --> I[Publish to registry]

    style E fill:#f9c,stroke:#c66
    style H fill:#ffc,stroke:#aa0
    style I fill:#cfc,stroke:#060
    style D fill:#eee,stroke:#999
Loading

Reviews (1): Last reviewed commit: "docs(adr): record ecosystem-enablement a..." | Re-trigger Greptile

ADR-0004 captures the "detection enables, config opts out" ecosystem-enablement
model (#554); ADR-0005 captures shipping no LLM model defaults and requiring an
explicit llm.model (#541). Both are decisions someone will otherwise re-litigate —
"why does cargo publish by default?" and "let's add model defaults for convenience"
— so the durable why belongs in an ADR.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011i1KvoyxATU3bz5V5Sf1Xu
@github-actions

Copy link
Copy Markdown
Contributor

Standing release PR: #555 · v0.40.1 queued (4 packages) · open 3h 8m · ✅ ready to merge

Release Preview — v0.40.0 → v0.40.1

Note: Labels on this PR are advisory in standing-pr mode. Bumps come from conventional commits in the standing PR; override by editing labels on the standing PR itself. Add release:immediate to bypass the standing PR and release this PR directly.

These changes will be added to the release PR (#555) when merged:

Changelog

monorepo 0.40.0 → 0.40.1

Changed

  • record ecosystem-enablement and required-LLM-model decisions (adr)

All packages → 0.40.1 (sync versioning)

  • @releasekit/version
  • @releasekit/notes
  • @releasekit/publish
  • @releasekit/release

After merge — predicted release

No version escalation — this PR's changes will be included in the queued release without affecting the projected versions.

Package Standing PR This PR After merge
monorepo 0.40.1 0.40.1 0.40.1

Updated automatically by ReleaseKit

@goosewobbler
goosewobbler merged commit 43ba6c0 into main Jul 19, 2026
18 checks passed
@goosewobbler
goosewobbler deleted the docs/adr-enablement-and-llm-model branch July 19, 2026 17:27
@github-actions github-actions Bot mentioned this pull request Jul 19, 2026
@github-actions github-actions Bot mentioned this pull request Jul 19, 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.

1 participant