Skip to content

Set a target floor for uv in spec/host-tools.json - #698

Merged
ptr727 merged 1 commit into
developfrom
feature/uv-version-floor
Aug 14, 2026
Merged

Set a target floor for uv in spec/host-tools.json#698
ptr727 merged 1 commit into
developfrom
feature/uv-version-floor

Conversation

@ptr727

@ptr727 ptr727 commented Aug 14, 2026

Copy link
Copy Markdown
Owner

Addresses #695.

uv carried a null minimum with no floor measured. The issue offered Windows winget versions (0.12.2, with winget already offering 0.12.4) as an unverified starting point, explicitly asking for someone with broader fleet data to firm it up into a real measured or target floor.

Cross-checked against this Linux host (uv 0.12.4, via host-setup/linux/install-tools.sh's always-fetch-latest install), the lower of the two independently observed versions becomes a target floor (0.12.2) in the same style jq's floor already uses: anchored to what an independently set-up host already provides rather than to a measured breakage, with real source/remedy entries per platform.

docker is deliberately left at null. Unlike uv, it has no remedy anchor anywhere in this repo (it isn't in either host-setup tool list, so there's no install/upgrade command to cite), and its existing why already argues the daemon version has never been what broke a run since the linters run as pinned images. Per this file's own stated philosophy ("a floor nobody can justify becomes a host failure nobody can act on"), adding a floor there would be unfounded.

Also fixes a latent bug in scripts/test_host_gate.py's test_the_contract_table_carries_every_declared_floor: the compound `uv` / `uvx` table cell normalized to a key (uvuvx) that neither tool name matched, which only surfaced now that uv actually carries a floor to check.

Verified locally:

  • python3 scripts/host_gate.py reports uv 0.12.4 meets the 0.12.2 floor
  • python3 -m unittest scripts.test_host_gate — 72 passed
  • python3 scripts/test_bootstrap.py — OK
  • python3 scripts/prose_lint.py spec/host-tools.json docs/host-setup.md — clean
  • python3 scripts/repo_gate.py --check eol — clean

uv carried a null minimum with no floor measured. Issue #695 offered
Windows winget versions as an unverified starting point. Cross-checked
against this Linux host, the lower of the two independently observed
versions (winget's 0.12.2 against the latest-tracking Linux install's
0.12.4) becomes a target floor in the same style jq's already uses,
with real source and remedy entries. docker is left at null: it has
no floor anchor in the repo (no host-setup remedy exists for it) and
its own why already argues the daemon version has never mattered.

Also fixes a docs/host-setup.md table-matching bug in
test_the_contract_table_carries_every_declared_floor: the compound
uv / uvx cell normalized to a key neither tool name matched.
Copilot AI lite review requested due to automatic review settings August 14, 2026 14:01

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Sets an actionable target minimum version for uv in the host tooling contract, updates the host setup documentation to reflect the new floor, and fixes a unit test edge case where a compound Markdown table cell (uv / uvx) was previously normalized into an unusable key.

Changes:

  • Define a target floor for uv (0.12.2) in spec/host-tools.json, including per-platform source and remedy commands.
  • Fix scripts/test_host_gate.py contract-table parsing to support a compound tool cell by mapping both tool tokens to the same row.
  • Update docs/host-setup.md to restate the new uv floor in the host contract table.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
spec/host-tools.json Adds a target minimum for uv plus platform-specific source/remedy metadata.
scripts/test_host_gate.py Fixes table-row keying for compound tool names and includes uv in the declared floor set.
docs/host-setup.md Updates the contract table’s Floor column for uv / uvx to match the new target floor.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@ptr727
ptr727 merged commit 8cb7e5b into develop Aug 14, 2026
7 checks passed
@ptr727
ptr727 deleted the feature/uv-version-floor branch August 14, 2026 14:08
ptr727 added a commit that referenced this pull request Aug 15, 2026
…Python CI Gates (#718)

Thirty-one squashes, `56f4d7d..d54862a`. 115 files, +20436/-5298.

**Merge with a merge commit, never a squash, and never with
`--delete-branch`.** This pull request's head is `develop` itself.

## What lands

**Fleet Skills.** The `.agents/skills/` source tree, the generated
`.claude-plugin/` distribution, `scripts/build_dist.py` with its
`--check` gate, and `scripts/skills_install.py` with its host stamp
(#676). Packaged as skills on top of the scaffold: PR review conduct and
Copilot instructions upkeep (#677), comment and doc style (#678),
resync-a-repo and fleet-conformance-check (#679), the per-language
codestyles (#680), git commit conventions and operational vs release
workflow (#681), stand up a repo (#683), and repo-worktree (#717).
Coverage gaps closed in three passes (#690, #691, #692) plus the P4
sentence-length opt-in (#697).

**Host setup.** The Windows host-setup tooling and its PowerShell gate
(#674), the Windows bootstrap loader (#682), Docker install and upgrade
on Linux and Windows with a version floor (#701, #705), a `uv` floor in
`spec/host-tools.json` (#698), self-healing of a shadowing `uv`, `jq`,
or `git-restore-mtime` copy (#689), node's real winget package id
(#696), and a README for the Linux host-setup nuances (#710).

**Python and CI.** Python tooling in CI with the script tests moved to
`scripts/tests` (#704), `ruff format` adopted and gated (#709), and the
PSScriptAnalyzer claim conditioned on repos that carry `.ps1` files
(#686).

**Conduct rules.** Triage-order and scope guardrails in
pr-review-conduct (#684), `pr_review.py wait` requesting a review rather
than only polling for one (#685), a tech-agnostic signed-commit
verification (#708), execution rather than analogy to verify
platform-specific code (#715), and a unique worktree for every task
(#717).

**Docs.** The fleet map and gap register with peer messaging declared
(#687), mermaid flow diagrams in the kept-authority docs (#702), and the
map pointed at the shipped diagrams and current tooling (#703).

## Issues this promotion closes

Each landed on `develop` on its own pull request. The keyword fires only
on a merge into `main`, so it sits here rather than on the feature pull
requests.

Closes #700
Closes #707
Closes #711
Closes #712
Closes #714
Closes #688

#699 stays open on purpose: #717 shipped the layout convention and the
skill, and the physical migration of existing checkouts is still tracked
there.

## Review record

Every squash closed its own Copilot loop on its own pull request before
merging to `develop`. This promotion carries no new content of its own,
so its review is the merged tree as a whole.

## Consequence worth stating

The `GOVERNANCE.md` and `AGENTS.md` sections these squashes changed
become the canonical the moment this reaches `main`, and every carrying
repository reads as drifted from that point until it resyncs. That is
the ordinary consequence of a canonical moving rather than a defect. The
Skills installer added here is also how a machine picks the new skills
up, so a session that keeps restating a rule already packaged as a skill
is the signal to run it.
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