Skip to content

Commit 6842358

Browse files
Merge pull request #346 from wphillipmoore/release/1.1.9
release: 1.1.9
2 parents be4f0be + 54d2363 commit 6842358

25 files changed

Lines changed: 638 additions & 258 deletions

.github/workflows/ci.yml

Lines changed: 46 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@ name: CI - Test and Validate
22

33
on:
44
pull_request:
5-
push:
6-
branches:
7-
- develop
8-
- 'release/**'
95

106
permissions:
117
contents: read
@@ -16,24 +12,24 @@ concurrency:
1612

1713
jobs:
1814
docs-only:
19-
name: docs-only
15+
name: "ci: docs-only"
2016
runs-on: ubuntu-latest
2117
outputs:
2218
docs-only: ${{ steps.detect.outputs.docs-only }}
2319
steps:
2420
- name: Checkout code
25-
uses: actions/checkout@v4
21+
uses: actions/checkout@v6
2622

2723
- name: Detect docs-only changes
2824
id: detect
2925
uses: wphillipmoore/standard-actions/actions/docs-only-detect@develop
3026

3127
standards-compliance:
32-
name: standards-compliance
28+
name: "ci: standards-compliance"
3329
runs-on: ubuntu-latest
3430
steps:
3531
- name: Checkout code
36-
uses: actions/checkout@v4
32+
uses: actions/checkout@v6
3733
with:
3834
fetch-depth: 0
3935

@@ -43,11 +39,11 @@ jobs:
4339
commit-cutoff-sha: "df45093c260def11f409dc4f3ba86e91ec444797"
4440

4541
dependency-audit:
46-
name: dependency-audit
42+
name: "ci: dependency-audit"
4743
runs-on: ubuntu-latest
4844
steps:
4945
- name: Checkout code
50-
uses: actions/checkout@v4
46+
uses: actions/checkout@v6
5147

5248
- name: Set up Python
5349
uses: wphillipmoore/standard-actions/actions/python/setup@develop
@@ -77,7 +73,7 @@ jobs:
7773
Python Software Foundation License"
7874
7975
release-gates:
80-
name: release-gates
76+
name: "release: gates"
8177
runs-on: ubuntu-latest
8278
steps:
8379
- name: Skip on non-PR events
@@ -86,13 +82,13 @@ jobs:
8682

8783
- name: Checkout code
8884
if: github.event_name == 'pull_request'
89-
uses: actions/checkout@v4
85+
uses: actions/checkout@v6
9086
with:
9187
fetch-depth: 0
9288

9389
- name: Set up Python 3.14
9490
if: github.event_name == 'pull_request'
95-
uses: actions/setup-python@v5
91+
uses: actions/setup-python@v6
9692
with:
9793
python-version: "3.14"
9894

@@ -114,7 +110,7 @@ jobs:
114110
main-version-command: git show origin/main:pyproject.toml | python3 -c "import sys, tomllib; print(tomllib.loads(sys.stdin.read())['project']['version'])"
115111

116112
test-and-validate:
117-
name: test-and-validate
113+
name: "test: unit"
118114
runs-on: ubuntu-latest
119115
needs: docs-only
120116
strategy:
@@ -128,7 +124,7 @@ jobs:
128124

129125
- name: Checkout code
130126
if: needs.docs-only.outputs.docs-only != 'true'
131-
uses: actions/checkout@v4
127+
uses: actions/checkout@v6
132128

133129
- name: Fetch base branch for version checks
134130
if: github.event_name == 'pull_request' && needs.docs-only.outputs.docs-only != 'true'
@@ -182,76 +178,99 @@ jobs:
182178
--cov-fail-under=100
183179
184180
codeql:
185-
name: codeql
181+
name: "security: codeql"
186182
runs-on: ubuntu-latest
187183
needs: docs-only
188-
if: needs.docs-only.outputs.docs-only != 'true'
189184
permissions:
190185
security-events: write
191186
steps:
187+
- name: Docs-only short-circuit
188+
if: needs.docs-only.outputs.docs-only == 'true'
189+
run: echo "Docs-only changes detected; skipping CodeQL."
190+
192191
- name: Checkout code
193-
uses: actions/checkout@v4
192+
if: needs.docs-only.outputs.docs-only != 'true'
193+
uses: actions/checkout@v6
194194

195195
- name: Run CodeQL analysis
196+
if: needs.docs-only.outputs.docs-only != 'true'
196197
uses: wphillipmoore/standard-actions/actions/security/codeql@develop
197198
with:
198199
language: python
199200

200201
trivy:
201-
name: trivy
202+
name: "security: trivy"
202203
runs-on: ubuntu-latest
203204
needs: docs-only
204-
if: needs.docs-only.outputs.docs-only != 'true'
205205
permissions:
206206
security-events: write
207207
steps:
208+
- name: Docs-only short-circuit
209+
if: needs.docs-only.outputs.docs-only == 'true'
210+
run: echo "Docs-only changes detected; skipping Trivy."
211+
208212
- name: Checkout code
209-
uses: actions/checkout@v4
213+
if: needs.docs-only.outputs.docs-only != 'true'
214+
uses: actions/checkout@v6
210215

211216
- name: Run Trivy vulnerability scan
217+
if: needs.docs-only.outputs.docs-only != 'true'
212218
uses: wphillipmoore/standard-actions/actions/security/trivy@develop
213219
with:
214220
scan-type: fs
215221

216222
semgrep:
217-
name: semgrep
223+
name: "security: semgrep"
218224
runs-on: ubuntu-latest
219225
needs: docs-only
220-
if: needs.docs-only.outputs.docs-only != 'true'
221226
permissions:
222227
security-events: write
223228
steps:
229+
- name: Docs-only short-circuit
230+
if: needs.docs-only.outputs.docs-only == 'true'
231+
run: echo "Docs-only changes detected; skipping Semgrep."
232+
224233
- name: Checkout code
225-
uses: actions/checkout@v4
234+
if: needs.docs-only.outputs.docs-only != 'true'
235+
uses: actions/checkout@v6
226236

227237
- name: Run Semgrep SAST scan
238+
if: needs.docs-only.outputs.docs-only != 'true'
228239
uses: wphillipmoore/standard-actions/actions/security/semgrep@develop
229240
with:
230241
language: python
231242

232243
integration-tests:
233-
name: integration-tests
244+
name: "test: integration"
234245
runs-on: ubuntu-latest
235246
needs: docs-only
236-
if: needs.docs-only.outputs.docs-only != 'true'
237247
steps:
248+
- name: Docs-only short-circuit
249+
if: needs.docs-only.outputs.docs-only == 'true'
250+
run: echo "Docs-only changes detected; skipping integration tests."
251+
238252
- name: Checkout code
239-
uses: actions/checkout@v4
253+
if: needs.docs-only.outputs.docs-only != 'true'
254+
uses: actions/checkout@v6
240255

241256
- name: Set up Python
257+
if: needs.docs-only.outputs.docs-only != 'true'
242258
uses: wphillipmoore/standard-actions/actions/python/setup@develop
243259
with:
244260
python-version: "3.14"
245261

246262
- name: Install dependencies
263+
if: needs.docs-only.outputs.docs-only != 'true'
247264
run: uv sync --frozen --group dev
248265

249266
- name: Setup MQ environment
267+
if: needs.docs-only.outputs.docs-only != 'true'
250268
uses: wphillipmoore/mq-rest-admin-dev-environment/.github/actions/setup-mq@main
251269
with:
252270
project-name: pymqrest
253271

254272
- name: Run integration tests
273+
if: needs.docs-only.outputs.docs-only != 'true'
255274
run: |
256275
MQ_SKIP_LIFECYCLE=1 \
257276
PYMQREST_RUN_INTEGRATION=1 \

.github/workflows/docs.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ concurrency:
1616

1717
jobs:
1818
deploy:
19-
name: deploy
19+
name: "deploy: docs"
2020
runs-on: ubuntu-latest
2121
steps:
2222
- name: Checkout code
23-
uses: actions/checkout@v4
23+
uses: actions/checkout@v6
2424
with:
2525
fetch-depth: 0
2626

.github/workflows/publish.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,16 @@ concurrency:
1717

1818
jobs:
1919
publish:
20-
name: publish
20+
name: "publish: release"
2121
runs-on: ubuntu-latest
2222
steps:
2323
- name: Checkout code
24-
uses: actions/checkout@v4
24+
uses: actions/checkout@v6
2525
with:
2626
fetch-depth: 0
2727

2828
- name: Set up Python 3.14
29-
uses: actions/setup-python@v5
29+
uses: actions/setup-python@v6
3030
with:
3131
python-version: "3.14"
3232

@@ -68,15 +68,15 @@ jobs:
6868
6969
- name: Install uv
7070
if: steps.pypi_check.outputs.status == 'not_found'
71-
run: python3 -m pip install uv==0.9.26
71+
run: python3 -m pip install uv==0.10.4
7272

7373
- name: Build sdist and wheel
7474
if: steps.pypi_check.outputs.status == 'not_found'
7575
run: uv build --sdist --wheel
7676

7777
- name: Attest build provenance
7878
if: steps.pypi_check.outputs.status == 'not_found'
79-
uses: actions/attest-build-provenance@v2
79+
uses: actions/attest-build-provenance@v3
8080
with:
8181
subject-path: "dist/*"
8282

@@ -113,7 +113,7 @@ jobs:
113113
- name: Generate app token for bump PR
114114
if: steps.tag_check.outputs.exists == 'false'
115115
id: app-token
116-
uses: actions/create-github-app-token@v1
116+
uses: actions/create-github-app-token@v2
117117
with:
118118
app-id: ${{ secrets.APP_ID }}
119119
private-key: ${{ secrets.APP_PRIVATE_KEY }}

.pip-licenses-allowlist

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Allowed license identifiers for pip-licenses compliance checks.
2+
# One entry per line. Lines starting with # are comments.
3+
Apache-2.0
4+
Apache-2.0 OR BSD-2-Clause
5+
Apache Software License
6+
BSD License
7+
BSD-2-Clause
8+
BSD-3-Clause
9+
GPL-3.0-or-later
10+
MIT
11+
MIT License
12+
Mozilla Public License 2.0 (MPL 2.0)
13+
PSF-2.0
14+
Python Software Foundation License

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/)
66
and this project adheres to [Semantic Versioning](https://semver.org/).
77

8+
## [1.1.9] - 2026-02-20
9+
10+
### Documentation
11+
12+
- ban MEMORY.md usage in CLAUDE.md (#339)
13+
- ban heredocs in shell commands (#340)
14+
15+
### Features
16+
17+
- add category prefixes to job names (#338)
18+
- adopt validate_local.sh dispatch architecture (#341)
19+
820
## [1.1.8] - 2026-02-19
921

1022
### Bug fixes

CLAUDE.md

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,34 @@
22

33
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
44

5+
## Auto-memory policy
6+
7+
**Do NOT use MEMORY.md.** Claude Code's auto-memory feature stores behavioral
8+
rules outside of version control, making them invisible to code review,
9+
inconsistent across repos, and unreliable across sessions. All behavioral rules,
10+
conventions, and workflow instructions belong in managed, version-controlled
11+
documentation (CLAUDE.md, AGENTS.md, skills, or docs/).
12+
13+
If you identify a pattern, convention, or rule worth preserving:
14+
15+
1. **Stop.** Do not write to MEMORY.md.
16+
2. **Discuss with the user** what you want to capture and why.
17+
3. **Together, decide** the correct managed location (CLAUDE.md, a skill file,
18+
standards docs, or a new issue to track the gap).
19+
20+
This policy exists because MEMORY.md is per-directory and per-machine — it
21+
creates divergent agent behavior across the multi-repo environment this project
22+
operates in. Consistency requires all guidance to live in shared, reviewable
23+
documentation.
24+
25+
## Shell command policy
26+
27+
**Do NOT use heredocs** (`<<EOF` / `<<'EOF'`) for multi-line arguments to CLI
28+
tools such as `gh`, `git commit`, or `curl`. Heredocs routinely fail due to
29+
shell escaping issues with apostrophes, backticks, and special characters.
30+
Always write multi-line content to a temporary file and pass it via `--body-file`
31+
or `--file` instead.
32+
533
## Documentation Strategy
634

735
This repository uses two complementary approaches for AI agent guidance:
@@ -254,7 +282,7 @@ The include directives at the top of this file load the full repository standard
254282

255283
**Python Invocation**: Always use `uv run python3 <script>`
256284

257-
**Tooling**: `uv` version `0.9.26`
285+
**Tooling**: `uv` version `0.10.4`
258286

259287
**Code Quality**: Ruff (all rules), mypy (strict), 100% test coverage, Python 3.14+
260288

docs/repository-standards.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
- branching_model: library-release
3232
- release_model: artifact-publishing
3333
- supported_release_lines: current and previous
34+
- primary_language: python
3435

3536
## Local validation
3637

@@ -51,7 +52,7 @@
5152

5253
Required for daily workflow:
5354

54-
- `uv` `0.9.26` (install with `python3 -m pip install uv==0.9.26`)
55+
- `uv` `0.10.4` (install with `python3 -m pip install uv==0.10.4`)
5556
- `markdownlint` (required for docs validation and PR pre-submission)
5657

5758
Required for integration testing:

docs/site/docs/development/developer-setup.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ locally.
88
| Tool | Version | Purpose |
99
| --- | --- | --- |
1010
| Python | 3.12+ | Runtime |
11-
| `uv` | 0.9.26 | Package and environment management |
11+
| `uv` | 0.10.4 | Package and environment management |
1212
| Docker | Latest | Local MQ containers (integration tests) |
1313
| `markdownlint` | Latest | Docs validation |
1414
| `git-cliff` | Latest | Changelog generation (releases only) |
1515

1616
Install `uv`:
1717

1818
```bash
19-
python3 -m pip install uv==0.9.26
19+
python3 -m pip install uv==0.10.4
2020
```
2121

2222
## Required repositories

0 commit comments

Comments
 (0)