Repository navigation
feat(toride): setup bundles — license-labeled, OS-conditional toolchain setup - #24
Merged
Merged
Conversation
- docs/setup-bundles-plan.md: reclassify the tflint license-table row from FreeWithTerms/consent-yes to Free/no-consent, matching the research it traces to (MPL-2.0 mostly, BUSL-files note kept in the license cell); the table now has exactly the three consent rows the §4.7 note and the Phase 1 AC already claimed. - scripts/check_plan_citations.sh: group the phase/milestone alternation inside the header-anchored ERE so the section check no longer passes on a bare prose line containing "milestone".
hmziqrs
approved these changes
Oct 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Implements
docs/setup-bundles-plan.mdphases 0–4 (the plan and its machine-checked citation gate are included): a declarative setup-bundles layer — opinionated, OS-conditional toolchain setup recommendations with first-class license labeling.Data model + registry (
1c7c2a2,c8088fe) — 8 bundles / 65 recommendations.LicenseKindcarries the commercial-use axis (Free/FreePersonal/PaidForCommercial/FreeWithTerms); every row carries a terms URL and a verified date. Invariant tests pin unique ids, resolvable alternatives/default-picks, the three consent rows, and coverage of the nine gate tools (sccache, mold, orbstack, docker, colima, podman, uv, opentofu, terraform).Evaluation + planning (
97daf08) — host-conditionalevaluate: on macOS the containers bundle offers colima (default pick, FOSS) + podman + OrbStack (paid-for-commercial) + Docker Desktop (free-with-terms) and hides mold; Linux flips that set.plan_rowproduces realInstallPlans through toride-apps (e.g.brew install --cask orbstack); planner refusals areErrvalues, never panics. The consent gate refusesPendingon the three paid/terms rows; dry-run plans are refused by the backend guard; installs record intoInstallManifest.Config hints (
db895db,2197551) — seeded hints (sccache → cargorustc-wrapper, direnv hook) applied through toride-fs atomic writes: exact bytes, skip-if-exists (metadata-based, non-UTF-8-safe, mode preserved), no append path (tripwire-enforced; hint code isolated insetup_bundles/hints.rs).TUI (
a7fd2d0,185e374) — read-only Setup section (sidebar⚒, mirrors the ToolsContent/collector patterns): license badges with verified dates, consent modal for non-Free rows showing price + terms URL, default selection always the bundle's FOSSdefault_pick, session dismissal on namespacedsetup.suggest.*ids (single constructor, divergence-pinned).Doctor adoption (
c30f701) — info-level, dismissiblesetup.suggest.*findings + sidebar badge; the tools screen'stools.missing.*warnings are byte-identical to pre-feature behavior.Docs (
a307b5c,e101c0b,bfd156f,0112fd9) — the plan withscripts/check_plan_citations.sh(84 citations / 42 license rows machine-checked), the implementation record with the divergence ledger, and the⚒icon registered in CLAUDE.md.Verification
cargo test -p toride: 1747 passed / 0 failed (5 ignored). All pre-existing snapshots byte-identical except one dashboard cell (sidebar section count — unavoidable when adding a section; diff reviewed).cargo clippy -p toride --all-targets -- -D warningsclean;cargo fmt --checkclean.bash scripts/check_plan_citations.shgreen (the plan doc cannot rot silently against the code).Out of scope (plan §10 open questions)
Persisted dismissal (v1 is session-only by design), the install executor behind
approved()(Setup screen read-only in v1), Windows bundles.