Skip to content

Commit 76fee4e

Browse files
committed
chore: prepare 2026.8.9.1 release
1 parent dae4384 commit 76fee4e

23 files changed

Lines changed: 222 additions & 44 deletions

.agents/docs/2026-08-09-mcpp-template-runtime-graphics-aur-implementation-plan.md

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -306,17 +306,17 @@
306306
- exit classification `noop | updated | transient | permanent | refused-downgrade`
307307
- manual inputs `publish=false|true`, optional exact latest stable tag only; no downgrade override in this phase.
308308

309-
- [ ] RED: fixture tests cover desired==observed no-op, upgrade, late old event refusal, missing/hash-mismatched asset, AUR maintenance retry, auth/permanent failure, RPC lag after git update, and known clone failure not becoming first publish.
310-
- [ ] RED: assert the reconciler never opens, hashes, copies, stages, or addresses `scripts/aur/mcpp-m/**`; compare pre/post tree hashes.
311-
- [ ] Split `update.sh` into an mcpp-bin-only compatibility wrapper around the renderer; remove all mcpp-m reads/writes without editing mcpp-m files.
312-
- [ ] Render PKGBUILD from `mcpp-release.json`; regenerate `.SRCINFO` with non-root Arch `makepkg --printsrcinfo`, then `makepkg --verifysource`.
313-
- [ ] Query AUR RPC and HTTPS git, compare versions with Arch `vercmp`, validate both Linux assets/sidecars, and produce a dry-run diff before secrets are loaded.
314-
- [ ] Publish only by normal fast-forward SSH push with pinned AUR host key and bounded exponential retry for maintenance/timeouts; never force or initialize a missing known package.
315-
- [ ] Verify remote git head, bounded-poll RPC, then install in a clean Arch container and assert `mcpp --version`.
316-
- [ ] Change workflow triggers to successful release workflow_run + six-hour schedule + workflow_dispatch; all call the same latest-stable reconciler. Remove the mcpp-m publish leg.
317-
- [ ] Emit Actions summary with trigger, desired/observed versions, hashes, remote commit, retry count, classification, and drift age; AUR failure must not alter GitHub release conclusion.
309+
- [x] RED: fixture tests cover desired==observed no-op, upgrade, late old event refusal, missing/hash-mismatched asset, AUR maintenance retry, auth/permanent failure, RPC lag after git update, and known clone failure not becoming first publish.
310+
- [x] RED: assert the reconciler never opens, hashes, copies, stages, or addresses `scripts/aur/mcpp-m/**`; compare pre/post tree hashes.
311+
- [x] Split `update.sh` into an mcpp-bin-only compatibility wrapper around the renderer; remove all mcpp-m reads/writes without editing mcpp-m files.
312+
- [x] Render PKGBUILD from `mcpp-release.json`; regenerate `.SRCINFO` with non-root Arch `makepkg --printsrcinfo`, then `makepkg --verifysource`.
313+
- [x] Query AUR RPC and HTTPS git, compare versions with Arch `vercmp`, validate both Linux assets/sidecars, and produce a dry-run diff before secrets are loaded.
314+
- [x] Publish only by normal fast-forward SSH push with pinned AUR host key and bounded exponential retry for maintenance/timeouts; never force or initialize a missing known package.
315+
- [x] Verify remote git head, bounded-poll RPC, then install in a clean Arch container and assert `mcpp --version`.
316+
- [x] Change workflow triggers to successful release workflow_run + six-hour schedule + workflow_dispatch; all call the same latest-stable reconciler. Remove the mcpp-m publish leg.
317+
- [x] Emit Actions summary with trigger, desired/observed versions, hashes, remote commit, retry count, classification, and drift age; AUR failure must not alter GitHub release conclusion.
318318
- [ ] GREEN: run Python tests, shell lint, dry-run against current latest release, and an Arch container source verification.
319-
- [ ] Commit mcpp-bin-only AUR reconciliation and verify mcpp-m byte hashes are unchanged.
319+
- [x] Commit mcpp-bin-only AUR reconciliation and verify mcpp-m byte hashes are unchanged.
320320

321321
## Task 10: Pin Latest xlings, Version mcpp, and Update User Documentation
322322

@@ -338,13 +338,13 @@
338338
- Modify: `docs/spec/package-identity.md`
339339
- Modify: `scripts/aur/README.md`
340340

341-
- [ ] Re-query latest non-draft/non-prerelease xlings immediately before pinning; pin the exact version and verify every authoritative pin site matches.
342-
- [ ] Choose the next unused calendar version (expected `2026.8.9.1` after live tag check), update `mcpp.toml`, and leave AUR snapshots to release-time generation.
343-
- [ ] Document `[ns.]name[@version][:tname]`, default `mcpplibs`, exact dotted namespaces, sole-template default, and legacy list migration.
344-
- [ ] Document McppDefault vs root/workspace-root `[xlings].subos`, no CLI override, non-transitive dependency semantics, coexistence across glibc bindings, and prebuilt ABI metadata boundary.
345-
- [ ] Document xlings/xim ownership of OpenGL/Vulkan providers and that mcpp never probes GPU/driver/ICD.
346-
- [ ] Document mcpp-bin-only eventual AUR reconciliation and explicitly state mcpp-m/mcpp-git are outside automation.
347-
- [ ] Update English and Chinese examples together; regenerate command reference if CLI help changed.
341+
- [x] Re-query latest non-draft/non-prerelease xlings immediately before pinning; pin the exact version and verify every authoritative pin site matches.
342+
- [x] Choose the next unused calendar version (expected `2026.8.9.1` after live tag check), update `mcpp.toml`, and leave AUR snapshots to release-time generation.
343+
- [x] Document `[ns.]name[@version][:tname]`, default `mcpplibs`, exact dotted namespaces, sole-template default, and legacy list migration.
344+
- [x] Document McppDefault vs root/workspace-root `[xlings].subos`, no CLI override, non-transitive dependency semantics, coexistence across glibc bindings, and prebuilt ABI metadata boundary.
345+
- [x] Document xlings/xim ownership of OpenGL/Vulkan providers and that mcpp never probes GPU/driver/ICD.
346+
- [x] Document mcpp-bin-only eventual AUR reconciliation and explicitly state mcpp-m/mcpp-git are outside automation.
347+
- [x] Update English and Chinese examples together; regenerate command reference if CLI help changed.
348348
- [ ] GREEN: run pin tests, docs example tests, generated command reference tests, `git diff --check`, and forbidden-vocabulary/boundary scans.
349349
- [ ] Commit version, xlings pin, and documentation.
350350

.agents/docs/2026-08-09-mcpp-template-runtime-graphics-aur-validation.md

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,9 +246,48 @@ Task 8 focused local evidence:
246246
- Workflow structure: Ruby/Psych parses `.github/workflows/release.yml`; all six jobs are present and ecosystem publication is gated by the immutable manifest job.
247247
- Public GitHub upload/refetch and eventual-consistency polling cannot be truthfully claimed from local fixtures; they remain explicit latest-HEAD release CI evidence.
248248

249+
### 5.8 mcpp-bin-only AUR reconciliation (Task 9)
250+
251+
- State-machine/contract suite: `python3 -m unittest tests/scripts/test_aur_reconcile.py`
252+
passes **11/11**. It covers no-op/upgrade/repair/RPC-lag/refused-downgrade,
253+
missing or mismatched release material, bounded maintenance retry, permanent
254+
auth failure, failed known-package clone without repo initialization, exact
255+
latest-complete release selection, workflow recovery triggers, and the pinned
256+
AUR ED25519 fingerprint.
257+
- Release fixture: the real public `v2026.8.8.4` payloads/sidecars and locally
258+
generated immutable manifest validate as desired `2026.8.8.4-1`; both Linux
259+
digests match manifest and sidecar. The first Arch render attempt classified
260+
the Docker Hub registry-header timeout as **transient**, not success.
261+
- `bash -n scripts/aur/update.sh`, Python compilation/tests, Ruby/Psych workflow
262+
parse, and `git diff --check`: PASS.
263+
- Protected `scripts/aur/mcpp-m/**` aggregate before/after remains
264+
`afb8a647e04483a86985119e07086016f49d55f177ee6257094c336d226113c6`.
265+
- The remaining real Arch `makepkg --printsrcinfo` / `--verifysource` gate is
266+
not claimed locally while the image pull is blocked; it remains an explicit
267+
validation/CI item.
268+
269+
### 5.9 latest pin, version, and user contract docs (Task 10)
270+
271+
- Live GitHub release API on 2026-08-09: newest stable xlings is
272+
`v2026.8.9.2`; newest stable mcpp is `v2026.8.8.4`, so the next unused mcpp
273+
version is `2026.8.9.1`.
274+
- Live `openxlings/xim-pkgindex` main identifies `2026.8.8.4` as the current
275+
mcpp latest for Linux/macOS/Windows; `.xlings.json` now bootstraps that
276+
published version rather than the previous stale `2026.8.6.2`.
277+
- `.github/tools/check_version_pins.sh` passes with every xlings pin at
278+
`2026.8.9.2`, build version `2026.8.9.1`, and bootstrap mcpp `2026.8.8.4`.
279+
- English/Chinese README, getting-started, manifest, toolchain, identity, AUR,
280+
and changelog text now state the same template/SubOS/graphics/AUR boundaries.
281+
249282
## 6. Pull request and CI
250283

251-
Not published yet. This section will record PR URL, local/remote HEAD, review state, all latest-head job IDs and terminal conclusions.
284+
Draft PR [#400](https://github.com/mcpp-community/mcpp/pull/400) was opened from
285+
`feat/template-runtime-graphics-aur`. Initial head `234a4df` exposed two real
286+
boundaries: stale declared glibc identity versus the resolved SubOS view on
287+
Linux, and Linux-only runtime-physics assertions executing on macOS/Windows.
288+
Both received focused regressions and were pushed at head `dae4384`; the new
289+
latest-head matrix was queued as runs `31317342625` through `31317342775`.
290+
Terminal conclusions are not yet claimed.
252291

253292
## 7. Merge and release
254293

.github/actions/bootstrap-mcpp/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ inputs:
2525
# `package.name`, so one of the two was simply unreachable — and which one
2626
# depended on the machine, which is why CI failed on `compat:lua` on
2727
# Windows and `mcpplibs.capi:lua` on Linux. Never pin below that.
28-
default: '2026.8.8.1'
28+
default: '2026.8.9.2'
2929
cache-target:
3030
description: also restore/save target/ (build artifacts + BMIs)
3131
required: false

.github/actions/setup-macos-llvm/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ inputs:
1515
# Floor imposed by the index, not a routine bump — see
1616
# .github/actions/bootstrap-mcpp/action.yml for why 0.4.69 is required
1717
# (two packages named `lua` in one repo need openxlings/xlings#381).
18-
default: '2026.8.8.1'
18+
default: '2026.8.9.2'
1919

2020
runs:
2121
using: composite

.github/workflows/bootstrap-macos.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
# Dormant (workflow_dispatch only), but kept in step with the rest —
1818
# check_version_pins.sh holds it there. Floor: 0.4.69, below which the
1919
# index cannot resolve two packages that share a short name.
20-
XLINGS_VERSION: '2026.8.8.1'
20+
XLINGS_VERSION: '2026.8.9.2'
2121
steps:
2222
- uses: actions/checkout@v4
2323

.github/workflows/ci-fresh-install.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ jobs:
152152
env:
153153
XLINGS_NON_INTERACTIVE: '1'
154154
run: |
155-
curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v2026.8.8.1
155+
curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v2026.8.9.2
156156
echo "$HOME/.xlings/subos/current/bin" >> "$GITHUB_PATH"
157157
158158
- name: Install mcpp and config mirror
@@ -293,7 +293,7 @@ jobs:
293293

294294
- name: Install xlings + mcpp
295295
run: |
296-
curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v2026.8.8.1
296+
curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v2026.8.9.2
297297
# Deliberately NOT writing to $GITHUB_PATH here. On container
298298
# images that declare no PATH in their config (opensuse/
299299
# tumbleweed), appending a single dir to GITHUB_PATH makes the
@@ -364,7 +364,7 @@ jobs:
364364
# (older ones carry minos=15 and refuse to start).
365365
# v0.4.51+: in-process sha256 — this image has no sha256sum
366366
# binary, so pinned fetches failed before it.
367-
curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v2026.8.8.1
367+
curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v2026.8.9.2
368368
echo "$HOME/.xlings/subos/current/bin" >> "$GITHUB_PATH"
369369
370370
- name: Install mcpp and config mirror

.github/workflows/ci-linux-e2e.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ jobs:
133133
134134
- name: Bootstrap xlings + released mcpp
135135
run: |
136-
curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v2026.8.8.1
136+
curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v2026.8.9.2
137137
export PATH="$HOME/.xlings/subos/current/bin:$PATH"
138138
xlings update
139139
xlings install mcpp -y -g

.github/workflows/cross-build-test.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ jobs:
118118
# release assets were uploaded in a broken state (records present,
119119
# blobs missing → 404 on GET); re-uploaded clean. The stale-INDEX
120120
# half is handled by the marker-clear below.
121-
XLINGS_VERSION: '2026.8.8.1'
121+
XLINGS_VERSION: '2026.8.9.2'
122122
run: |
123123
tarball="xlings-${XLINGS_VERSION}-linux-x86_64.tar.gz"
124124
curl -fsSL -o "/tmp/${tarball}" \
@@ -255,7 +255,7 @@ jobs:
255255
- name: Bootstrap mcpp via xlings
256256
env:
257257
XLINGS_NON_INTERACTIVE: '1'
258-
XLINGS_VERSION: '2026.8.8.1'
258+
XLINGS_VERSION: '2026.8.9.2'
259259
run: |
260260
tarball="xlings-${XLINGS_VERSION}-linux-x86_64.tar.gz"
261261
curl -fsSL -o "/tmp/${tarball}" \

.github/workflows/release.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ jobs:
9696
# Pin xlings to a known-good version. The upstream install
9797
# script always grabs `latest` (no version override), so we
9898
# download + self-install manually to avoid broken releases.
99-
XLINGS_VERSION: '2026.8.8.1'
99+
XLINGS_VERSION: '2026.8.9.2'
100100
run: |
101101
if [ ! -x "$HOME/.xlings/subos/default/bin/xlings" ]; then
102102
tarball="xlings-${XLINGS_VERSION}-linux-x86_64.tar.gz"
@@ -288,7 +288,7 @@ jobs:
288288
- name: Bootstrap mcpp via xlings
289289
env:
290290
XLINGS_NON_INTERACTIVE: '1'
291-
XLINGS_VERSION: '2026.8.8.1'
291+
XLINGS_VERSION: '2026.8.9.2'
292292
run: |
293293
tarball="xlings-${XLINGS_VERSION}-linux-x86_64.tar.gz"
294294
curl -fsSL -o "/tmp/${tarball}" \
@@ -358,11 +358,11 @@ jobs:
358358
# below are pinned to the same version as XLINGS_VERSION; they are
359359
# NOT interpolated from it, so check_version_pins.sh scans for them
360360
# explicitly (they were absent from the old lock-step comment).
361-
XLA="xlings-2026.8.8.1-linux-aarch64.tar.gz"
361+
XLA="xlings-2026.8.9.2-linux-aarch64.tar.gz"
362362
if curl -fsSL -o "/tmp/$XLA" \
363-
"https://github.com/openxlings/xlings/releases/download/v2026.8.8.1/$XLA"; then
363+
"https://github.com/openxlings/xlings/releases/download/v2026.8.9.2/$XLA"; then
364364
tar -xzf "/tmp/$XLA" -C /tmp
365-
XLBIN=$(find /tmp/xlings-2026.8.8.1-linux-aarch64 -path '*/bin/xlings' -type f | head -1)
365+
XLBIN=$(find /tmp/xlings-2026.8.9.2-linux-aarch64 -path '*/bin/xlings' -type f | head -1)
366366
if [ -n "$XLBIN" ]; then
367367
mkdir -p "$STAGING/$WRAPPER/registry/bin"
368368
cp "$XLBIN" "$STAGING/$WRAPPER/registry/bin/xlings"
@@ -440,7 +440,7 @@ jobs:
440440
- name: Bootstrap mcpp via xlings
441441
env:
442442
XLINGS_NON_INTERACTIVE: '1'
443-
XLINGS_VERSION: '2026.8.8.1'
443+
XLINGS_VERSION: '2026.8.9.2'
444444
run: |
445445
if [ ! -x "$HOME/.xlings/subos/default/bin/xlings" ]; then
446446
WORK=$(mktemp -d)
@@ -622,7 +622,7 @@ jobs:
622622
shell: bash
623623
env:
624624
XLINGS_NON_INTERACTIVE: '1'
625-
XLINGS_VERSION: '2026.8.8.1'
625+
XLINGS_VERSION: '2026.8.9.2'
626626
run: |
627627
# Captured before the `cd` below, in POSIX form: this step never
628628
# returns to the workspace, and GITHUB_WORKSPACE is a backslash

.xlings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"workspace": {
3-
"mcpp": "2026.8.6.2"
3+
"mcpp": "2026.8.8.4"
44
}
55
}

0 commit comments

Comments
 (0)