Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
dc83c21
OpenSpec change release-tags-pypi: proposal (#228)
Oct 17, 2026
698cf30
OpenSpec change release-tags-pypi: alignment review fixes and Brett's…
Oct 17, 2026
56669c1
OpenSpec change release-tags-pypi: council verdicts applied, and clar…
Oct 17, 2026
ea306de
OpenSpec change release-tags-pypi: the wheel's LICENSE is held by the…
Oct 17, 2026
1fcb95c
OpenSpec change release-tags-pypi: delta specs for its two new capabi…
Oct 17, 2026
9571d9c
OpenSpec change release-tags-pypi: design.md (#228)
Oct 17, 2026
28a441a
OpenSpec change release-tags-pypi: tasks.md, the governance and hando…
Oct 17, 2026
8035d77
OpenSpec change release-tags-pypi: design.md records the lead's rulin…
Oct 17, 2026
eb12177
Speckit feature 006-release-pypi: spec.md and its quality checklist (…
Oct 17, 2026
760281b
OpenSpec change release-tags-pypi: tasks.md records the Speckit hando…
Oct 17, 2026
83c69ed
Speckit feature 006-release-pypi: plan, research, data model, contrac…
Oct 17, 2026
01ff6d6
Speckit feature 006-release-pypi: tasks.md, 25 tasks by user story an…
Oct 17, 2026
335d226
Speckit feature 006-release-pypi: /speckit.analyze findings fixed, no…
Oct 18, 2026
b0640a5
Release tags and PyPI: the lead's rulings of 2026-10-18 on 335d226, i…
Oct 18, 2026
5e592ca
Merge main d424b64 into 006-release-pypi (#228): bring the branch up …
Oct 18, 2026
140c5ab
T001: the package's docstring-only __init__ and its committed, unstam…
Oct 18, 2026
cf43b07
tasks.md: T001 done (accepted 140c5ab on model, scope and verify); T0…
Oct 18, 2026
b6ff505
T001: both package files open with the repository's SPDX line (lead's…
Oct 18, 2026
fd554d8
The stamp contract follows T001's SPDX line: the SPDX line, one docst…
Oct 18, 2026
8701f19
The workBenches condition is decided: Brett Heap's position (c), open…
Oct 18, 2026
f35ec31
T002: pyproject.toml declares the openrepotools wheel, per contracts/…
Oct 18, 2026
0da3386
tasks.md: T002 done (accepted f35ec31 on model, scope and verify) (#228)
Oct 18, 2026
0e99729
T003: tests/package_layout.py builds the package's fake installed lay…
Oct 18, 2026
0670b42
tasks.md: T003 done (accepted 0e99729 on model, scope and verify) (#228)
Oct 18, 2026
4ae999d
Merge main f595e44 into 006-release-pypi (#228)
Oct 18, 2026
7921a2e
T004: tests/test_install_pipx.py holds pipx's link, its skip and the …
Oct 18, 2026
d57b75d
T006: hold src/openrepotools to the standard library, and compile it …
Oct 18, 2026
fa44864
T010: rewrite the docstring of test_version_names_the_repository_and_…
Oct 18, 2026
b286953
T005: tests/test_package.py holds pyproject.toml, the payload map, a …
Oct 18, 2026
2e4a633
tasks.md: T005, T006 and T010 done, each built in its own lane-3 task…
Oct 18, 2026
2539a87
tasks.md: T004 done (accepted 7921a2e on model, scope and verify, 09:…
Oct 18, 2026
85ae5f0
Release tags and PyPI: the lead's ruling of 2026-10-18 on T007's repo…
Oct 18, 2026
a5c1538
T007: add the entry module, whose main() execs bash on the packaged i…
Oct 18, 2026
6b13ac2
tasks.md: T007 done (accepted 1134471 on model, scope and verify, 09:…
Oct 18, 2026
b67efa5
T008: openRepoTools leaves pipx's link to pipx, and refuses a venv-sh…
Oct 18, 2026
691c638
tasks.md: T008 done (accepted d5aa53b on model, scope and verify, 09:…
Oct 18, 2026
bf5e6e2
T026: put back the signals Python ignores before the exec, and refuse…
Oct 18, 2026
d3a6115
tasks.md: T026 done (accepted 28d9346 on model, scope and verify, 09:…
Oct 18, 2026
7ffd486
T009: tests/test_package_stamp.py holds the stamp reader, hatch's agr…
Oct 18, 2026
a8b5f7f
tasks.md: T009 done (accepted 55004f2 on model, scope and verify; che…
Oct 18, 2026
7e64851
T012: tests/test_install_pipx.py holds coexistence, pip's script, the…
Oct 18, 2026
e42c744
tasks.md: T012 done (accepted 75e27d0 on model, scope and verify; che…
Oct 18, 2026
902d199
T011: openRepoTools reads its package's stamp and prints its release …
Oct 18, 2026
628a46f
tasks.md: T011 done (accepted bf7264a on model, scope and verify; che…
Oct 18, 2026
3351007
Merge main 586dea2 into 006-release-pypi (#228)
Oct 18, 2026
03c3eb7
T013: openRepoTools names the other source beside pipx's link, refuse…
Oct 18, 2026
755ff9d
006 docs: the documents say what 628a46f does, and the counts follow …
Oct 18, 2026
32d9018
tasks.md: T013 done (accepted 55c9a02 on model, scope and verify: 538…
Oct 18, 2026
c1c1c71
006 docs 2: the stamp's readers say at run time, FR-047 is decided, T…
Oct 18, 2026
b7c111c
PR 1 review: tests for the guard's three non-ASCII folds, the count l…
Oct 18, 2026
65166ea
PR 1 review: the PATH report's silent skip is in cli-output.md, resea…
Oct 18, 2026
08743b0
PR 1 review: design.md's line citations are re-derived (#228)
Oct 18, 2026
fc8e37d
Merge main 08e7550 into 006-release-pypi (#228)
Oct 18, 2026
c4bc7bf
T014: the two hash locks, openRepoShape v1.1.0's byte for byte below …
Oct 18, 2026
f526a0a
T015: tests/test_tests_workflow.py holds tests.yml's triggers, four j…
Oct 18, 2026
cebac37
T016: tests.yml pushes on main and release/v*, and its package job bu…
Oct 18, 2026
43b4e52
T017: AGENTS.md's CI paragraph names tests.yml's four jobs, its two p…
Oct 18, 2026
85a7b05
tasks.md: T014 to T017 done (#228)
Oct 18, 2026
7b5167a
T018: tests/test_release_workflow.py holds release.yml, its hash lock…
Oct 18, 2026
0de7213
T019: release.yml's shape and its build job, adapted step for step fr…
Oct 18, 2026
fb2249f
T020: release.yml's testpypi, install and pypi jobs, adapted from ope…
Oct 18, 2026
a04b9e2
T021: release.yml's RELEASING header, in contracts/workflows.md's six…
Oct 18, 2026
ac2ca2b
PR 3 docs: the empty-index check is the model's, no file but the veri…
Oct 18, 2026
29cc1b3
tasks.md: T018 to T021 done (#228)
Oct 18, 2026
5629a84
PR 2 review: the build lock's header says the pipx lock carries the s…
Oct 19, 2026
fa3bd83
PR 2 review: tests.yml's comment and a test docstring say the pipx lo…
Oct 19, 2026
1b41ce7
Merge PR 2 review fixes (fa3bd83) into 006-release-pypi-pr3 (#228)
Oct 19, 2026
1d5d657
PR 3 review: a test holds the install check's offline --install to te…
Oct 19, 2026
2ed477f
PR 3 review: each upload job's guard is run on refs other than the ve…
Oct 19, 2026
5116295
PR 3 review: the stamp writer writes neither copy until both are chec…
Oct 19, 2026
d0620ab
PR 3 review: the wheel check is run on one synthetic wheel per member…
Oct 19, 2026
34f4239
PR 3 review: the sha256 checks before each upload and before the inst…
Oct 19, 2026
5bc35c3
PR 3 review: the build's guard is held to refuse a ref that is neithe…
Oct 19, 2026
c6cea2a
PR 3 review: design.md numbers the T020 ruling 15, and says the 3.9 l…
Oct 19, 2026
2a5d56c
PR 3 review, round 2: both upload jobs' index checks are run against …
Oct 19, 2026
7b1c693
PR 3 review, round 2: the install check's --version step and its Pyth…
Oct 19, 2026
bc454ad
PR 3 review, round 2: the macOS rerun is tied to the offline --instal…
Oct 19, 2026
9682f0b
PR 3 review, round 2: the header's approval step and branch cut are p…
Oct 19, 2026
4daaeda
PR 3b: the install check's fetch and pipx's link are run, with curl a…
Oct 19, 2026
2f274c4
PR 3b: the approval and tag re-checks and the build's environments st…
Oct 19, 2026
9762479
PR 3b: the ref step is run on tags that a forge and a file:// origin …
Oct 19, 2026
2a83a61
PR 3b: the wheel check refuses metadata, entry points and a .dist-inf…
Oct 19, 2026
0cf8142
PR 3b: the stamp's tag and read-back checks, the gate's own head_sha …
Oct 19, 2026
76dd73c
PR 3b: the clean step is run, and the test file's header says which d…
Oct 19, 2026
5ccd66e
PR 3b: one spelling for the rehearsal's row, FR-029's additions named…
Oct 19, 2026
7376b34
WIP: PR 3b, the re-check's NITs and the stamp step's two refs, writte…
Oct 19, 2026
2ff7094
PR 3b's fix-up: the header names the dist step among the steps run, t…
Oct 20, 2026
1957254
Merge main f18b818 into 006-release-pypi-pr3b, as queue prefix q7k2-2…
Oct 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ name: release
# `/bin/bash` 3.2, and compiling the payload's two Python commands on
# 3.9;
# - no step reads the release notes (WHAT THIS WORKFLOW NEVER READS).
# It also holds more than the model where FR-029 and contracts/workflows.md
# ask for it: the gate names `tests.yml`'s four jobs, the build checks out
# full history with the submodule, and the ref step fetches the tag again
# without `--depth`.
#
# FOUR JOBS, EACH GATED ON THE ONE BEFORE IT:
# build the version and the repository guard; the tag, the branch, the
Expand Down Expand Up @@ -289,7 +293,8 @@ jobs:
with:
python-version: '3.12'

# STEP 1, BEFORE ANYTHING ASKS THE FORGE: THE VERSION, AND THE
# STEP 1, THE JOB'S FIRST SCRIPT, AFTER THE CHECKOUT AND THE PYTHON
# SETUP AND BEFORE ANY SCRIPT ASKS THE FORGE: THE VERSION, AND THE
# REPOSITORY GUARD (FR-048). The model has no guard; this one puts
# Brett Heap's answers on where releases come from into code.
#
Expand All @@ -306,7 +311,7 @@ jobs:
# opensoft/openRepoTools a tag X.Y.ZrcN TestPyPI alone
# opensoft/openRepoTools a tag X.Y.Z refused
# any other repository a tag any refused
# any repository a branch any neither: the rehearsal
# any repository a branch any nothing: the rehearsal
# The two names are compared exactly, as GitHub spells them in
# `$GITHUB_REPOSITORY`, so any other spelling is "any other" and fails
# closed. A ref that is neither a tag nor a branch is refused here too,
Expand Down
10 changes: 6 additions & 4 deletions specs/006-release-pypi/spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -279,9 +279,9 @@ workflow's stamp writer.
refuses before any approval is asked, and nothing is uploaded (FR-048).
9. **Given** an upload job and no approval for its environment, **When** the
run reaches it, **Then** the job waits, and nothing is uploaded.
9. **Given** the macOS leg of the install check, **When** it reruns
`--install` under `/bin/bash`, **Then** it prints a `BASH_VERSION` of 3.2,
and the install succeeds with the same skip and count lines.
10. **Given** the macOS leg of the install check, **When** it reruns
`--install` under `/bin/bash`, **Then** it prints a `BASH_VERSION` of
3.2, and the install succeeds with the same skip and count lines.

---

Expand Down Expand Up @@ -605,7 +605,9 @@ passages, and the absence of the pipx route.
- it runs one release at a time, and never cancels one in progress;
- it is adapted from openRepoShape v1.1.0's (`190133d`), taking over that
workflow's checks as they are, except where design.md Decision 10 names
a difference.
a difference, and holding more where FR-029 and contracts/workflows.md
ask for it: the gate on `tests.yml`'s four jobs, the build's full-history
checkout with its submodule, and the tag fetch without `--depth`.
- **FR-029**: The build MUST refuse unless every one of these holds:
- the version is a final `X.Y.Z` other than `0.0.0`, or a pre-release
`X.Y.ZrcN` bound for TestPyPI;
Expand Down
Loading
Loading