Skip to content

Commit a0fbcc1

Browse files
committed
release: v0.19.0 — plans-tree audit
Finalize the two [Unreleased] entries (future-additions.md + shipping-audit.md) into a tagged release. Doc-only. The two plans docs were already pushed to main as chores yesterday and earlier today; v0.19.0 doesn't change their content. What it adds: 1. A release-notes entry pointing at where the plans-tree audit lives. 2. A bump of the version so external consumers of the JSON schema / wheel see the latest tagged release reflects the complete-as-of-now state. 3. A CHANGELOG section heading promoting [Unreleased] → [0.19.0], which is what the release.yml guard job checks. The audit's key finding, in section J of shipping-audit.md: Bucket Count Status Migration W-items 9 shipped Defer-list items 4 + 1 shipped/rejected Validation-report TODOs 5 shipped Cleanup deferrals 2 shipped Shipping-checklist (in-code) all shipped Shipping-checklist (user-action) 2 PENDING (user) Shipping-checklist (optional) 3 available Permanent skips 16 documented Future additions 14 captured The plans tree is drained. No documented intent is silently orphaned — every item is in one of: shipped, pending-on-user, permanently-rejected, or future-additions. Gates: pytest 1130 passed, ruff clean, mypy strict clean.
1 parent e5476bf commit a0fbcc1

5 files changed

Lines changed: 146 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
66

77
## [Unreleased]
88

9+
## [0.19.0] — 2026-05-16
10+
911
### Added
1012

1113
- `docs/plans/future-additions.md` — captures the naturally-
@@ -32,6 +34,16 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
3234

3335
Both files linked from docs/README.md Development section.
3436

37+
### Notes
38+
39+
Doc-only release. No source-code changes. The two plans docs were
40+
already pushed to `main` as chores ahead of this release; v0.19.0
41+
tags the existing tree and ships a release-notes entry so the
42+
docs index has a clear "this is the version where the audit
43+
landed" pointer.
44+
45+
Gates: pytest 1130 passed, ruff clean, mypy strict clean.
46+
3547
## [0.18.0] — 2026-05-16
3648

3749
### Changed

docs/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,9 @@ Top-level utilities (not tools):
108108

109109
Per-version, user-facing summaries (newest first):
110110

111+
- **[`v0.19.0`](release-notes/v0.19.0.md)** — plans-tree audit.
112+
Two new plans docs: `future-additions.md` (no-demand items) +
113+
`shipping-audit.md` (comprehensive shipped-vs-pending walk).
111114
- **[`v0.18.0`](release-notes/v0.18.0.md)** — doc-sync pass.
112115
README + architecture + onboarding + cron tool doc + JSON schema
113116
brought current with v0.17.0 reality.

docs/release-notes/v0.19.0.md

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
# shimkit 0.19.0
2+
3+
Plans tree drained. Two new plans-docs land in `docs/plans/`. No
4+
source-code changes.
5+
6+
For the full machine-readable changelog, see
7+
[`CHANGELOG.md`](../../CHANGELOG.md).
8+
9+
---
10+
11+
## TL;DR
12+
13+
```
14+
docs/plans/future-additions.md items with concrete patterns, no demand
15+
docs/plans/shipping-audit.md what shipped vs what's pending
16+
```
17+
18+
Together they answer the question "is there anything in any plan,
19+
design spec, or doc that's silently orphaned?" — and the answer
20+
is **no**.
21+
22+
---
23+
24+
## What got documented
25+
26+
### `future-additions.md`
27+
28+
Items with a clear pattern + LOC estimate but **no current user
29+
demand**. Graduation rule: "someone is asking for it" — not "it
30+
would be nice to have."
31+
32+
- More TLS DNS-01 providers (DigitalOcean, Hurricane Electric,
33+
Google Cloud DNS, Linode, OVH).
34+
- More framework recipes (Rails, Next.js, Flask).
35+
- More db engines (valkey, elasticsearch, opensearch, kafka,
36+
minio, clickhouse).
37+
- `--on-host` for `stack lemp` — explicitly **rejected** with
38+
rationale: stack is intrinsically multi-container; the v0.9.0
39+
`db --on-host` covers the "local db without Docker" need
40+
without inheriting the recipe's coupling complexity.
41+
42+
### `shipping-audit.md`
43+
44+
Comprehensive walk through every plan / design spec / doc in the
45+
repo. Ten sections covering:
46+
47+
| Section | Bucket | Count |
48+
|---------|--------|-------|
49+
| A | Migration W1-W9 | 9/9 shipped |
50+
| B | feature-gap-analysis defer list | 4 shipped + 1 rejected |
51+
| C | validation-report TODOs | all closed out |
52+
| D | cleanup-2026-05-14 deferrals | 2 shipped (v0.10 / v0.12) |
53+
| E | shipping-checklist | all in-code shipped |
54+
| F | Permanent skips | 16 documented with rationale |
55+
| G | **User-side actions still pending** | 2 |
56+
| H | Future additions | cross-ref |
57+
| I | Chronological release list | 13 releases this session |
58+
| J | Audit conclusion | "the plans tree is drained" |
59+
60+
---
61+
62+
## Section G — the only items still genuinely outstanding
63+
64+
These are **not** deferrals. shimkit's code is ready; the
65+
**human** isn't.
66+
67+
### G.1 — PyPI trusted-publisher config (~10 min)
68+
69+
The `publish-pypi` job has failed on v0.11.0 through v0.18.0
70+
because the user-side trusted-publisher config isn't done yet.
71+
The wheel + sdist are live on the GitHub Release page for every
72+
version; PyPI is empty.
73+
74+
To fix (see shipping-audit.md G.1 for full step-by-step):
75+
76+
1. PyPI → <https://pypi.org/manage/account/publishing/> → add
77+
pending publisher with `simtabi` / `shimkit` / `release.yml`
78+
/ Environment `pypi`.
79+
2. GitHub → Settings → Environments → "New environment" named
80+
`pypi`.
81+
3. Re-run failed jobs:
82+
83+
```bash
84+
gh run list --workflow=release.yml | grep failure
85+
# for each failed run id:
86+
gh run rerun <run-id> --failed
87+
```
88+
89+
That backfills PyPI with the 10+ tags' wheels in ~5 minutes.
90+
91+
### G.2 — Branch protection on `main` (~3 min)
92+
93+
Settings → Branches → Add rule for `main` requiring the named
94+
status checks (`test (matrix cells)`, `security`, `build`,
95+
`smoke`).
96+
97+
---
98+
99+
## Why ship the docs as their own release
100+
101+
The two plans docs were already pushed to `main` as chores
102+
yesterday. Tagging v0.19.0 today doesn't change the docs
103+
themselves — it gives the docs-index release-notes table a clear
104+
"this is the version where the plans-tree audit landed" pointer.
105+
106+
The next maintainer (or future me) reading the GitHub Release
107+
page can see "v0.19.0 — plans-tree audit" and know exactly where
108+
the durable record of what's done / what's pending / what's
109+
rejected lives.
110+
111+
---
112+
113+
## Stats
114+
115+
- Tests: 1130 (unchanged)
116+
- Source LOC: 0 changed
117+
- Doc LOC: ~500 added (across the two plans docs)
118+
- Gates: pytest, ruff, mypy strict — all green
119+
120+
---
121+
122+
## Upgrading
123+
124+
```bash
125+
uv tool upgrade shimkit
126+
pipx upgrade shimkit
127+
```
128+
129+
No behavioural changes.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "shimkit"
7-
version = "0.18.0"
7+
version = "0.19.0"
88
description = "A toolkit of developer utilities — Java version manager, shell upgrader, and more. Python tools, shimmed by bash."
99
readme = "README.md"
1010
license = { file = "LICENSE" }

src/shimkit/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
Python tools, shimmed by bash.
44
"""
55

6-
__version__ = "0.18.0"
6+
__version__ = "0.19.0"
77
__all__ = ["__version__"]

0 commit comments

Comments
 (0)