diff --git a/CHANGELOG.md b/CHANGELOG.md index a83fa72..08aac9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,24 @@ under *Changed* or *Removed*. The `Unreleased` block accumulates entries during development and is rolled into a dated version block (`## [X.Y.Z] — YYYY-MM-DD`) when a release PR closes a milestone. +## [1.1.0] — 2026-06-14 + +**Milestone 8 — Internationalization & Post-Release Governance.** The first +post-1.0 **MINOR**: purely **additive** documentation and governance — the library +binary is unchanged from `v1.0.x` (no API/ABI/behaviour change), so existing +consumers are unaffected. It stands up a **documentation-translation system** +(English stays the single normative source; Simplified Chinese `zh-Hans` and +Japanese `ja` cover the full translatable surface — README, spec, patterns-catalogue +overview — under `docs/i18n/`, with a commit-pinned staleness manifest and a +glossary), establishes the **maintained-product governance** (the post-release +maintenance protocol, and English made the spec's normative language), and adds an +**agent-runnable consistency lint** (`tools/consistency_lint.py`) plus its CI gate +and agent-contract wiring that prove the project stays internally congruent after +every change. Four new ADRs (0032 i18n architecture, 0033 English-normative spec, +0034 maintenance protocol, 0035 consistency lint) take the running total to **35**. No spec row changes — Milestone 8 is additive +documentation/governance. Full release notes in +[`docs/releases/v1.1.0.md`](docs/releases/v1.1.0.md). + ### Changed (M8.7) - **Consistency lint wired into the agent contract** (ROADMAP §8.7). [`AGENTS.md`](AGENTS.md) @@ -1035,7 +1053,8 @@ Milestone 2 → `v0.2.0`. Full release notes in --- -[Unreleased]: https://github.com/danielPoloWork/pbr-cpp-memory-pool/compare/v1.0.1...HEAD +[Unreleased]: https://github.com/danielPoloWork/pbr-cpp-memory-pool/compare/v1.1.0...HEAD +[1.1.0]: https://github.com/danielPoloWork/pbr-cpp-memory-pool/releases/tag/v1.1.0 [1.0.1]: https://github.com/danielPoloWork/pbr-cpp-memory-pool/releases/tag/v1.0.1 [1.0.0]: https://github.com/danielPoloWork/pbr-cpp-memory-pool/releases/tag/v1.0.0 [0.6.0]: https://github.com/danielPoloWork/pbr-cpp-memory-pool/releases/tag/v0.6.0 diff --git a/README.md b/README.md index b96941d..8b4f558 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![docs-site](https://github.com/danielPoloWork/pbr-cpp-memory-pool/actions/workflows/docs-site.yml/badge.svg)](https://github.com/danielPoloWork/pbr-cpp-memory-pool/actions/workflows/docs-site.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Standard: C++17 / ANSI C](https://img.shields.io/badge/Standard-C%2B%2B17%20%2F%20ANSI%20C-blue.svg)](docs/specs/01_spec_cpp_memory_pool.md) -[![Status: v1.0.1 stable](https://img.shields.io/badge/Status-v1.0.1%20stable-brightgreen.svg)](https://github.com/danielPoloWork/pbr-cpp-memory-pool/releases/tag/v1.0.1) +[![Status: v1.1.0 stable](https://img.shields.io/badge/Status-v1.1.0%20stable-brightgreen.svg)](https://github.com/danielPoloWork/pbr-cpp-memory-pool/releases/tag/v1.1.0) > Part of the **Purpose-Built References (PBR)** series — small, didactic, production-quality C/C++ reference implementations of high-performance building blocks. @@ -191,6 +191,8 @@ Reports for other host × compiler combinations (Linux / GCC, Linux / Clang, mac ## Status +`v1.1.0` — **internationalization & post-release governance** (Milestone 8), the first post-1.0 MINOR. Purely **additive** — the library binary is unchanged from `v1.0.x`. Documentation now ships in **Simplified Chinese (`zh-Hans`) and Japanese (`ja`)** (English stays normative — [`docs/i18n/`](docs/i18n/), [ADR-0032](docs/adr/0032-documentation-i18n-architecture.md)); the spec is English-normative ([ADR-0033](docs/adr/0033-english-as-the-spec-normative-language.md)); a [post-release maintenance protocol](docs/workflow/maintenance.md) ([ADR-0034](docs/adr/0034-post-release-maintenance-protocol.md)) governs the maintained-product phase; and an agent-runnable [`consistency lint`](tools/consistency_lint.py) ([ADR-0035](docs/adr/0035-agent-runnable-consistency-lint.md)) gates cross-artifact congruence in CI and the agent contract. Four new ADRs (0032–0035) bring the total to 35. Release notes: [`docs/releases/v1.1.0.md`](docs/releases/v1.1.0.md). The earlier line: + `v1.0.1` — **packaging patch** over the frozen `v1.0.0` API: adds the vcpkg port and the Conan 2.x recipe (Phase 2 distribution, ADRs [0030](docs/adr/0030-vcpkg-port.md) / [0031](docs/adr/0031-conan-recipe.md)). The shipped library is byte-identical to `v1.0.0` — a `PATCH`, no API/ABI/behaviour change. Release notes: [`docs/releases/v1.0.1.md`](docs/releases/v1.0.1.md). The stable baseline it patches: `v1.0.0` — **the first stable release.** The public C ABI (`memory_pool_create` / `_alloc` / `_free` / `_destroy` plus the O(1) introspection accessors) and the C++ surface (`Pool`, `TypedPool`, `PoolAllocator`, `InstrumentedPool`, `PoolObserver`) are frozen under the SemVer 1.0 promise — no breaking change without a `2.0.0`. `v1.0.0` seals the feature set built across Milestones 0–6 — the O(1) implicit-free-list fixed-block pool with zero per-block metadata, the RAII / typed / STL-allocator C++ wrappers, compile-time-configurable thread safety, optional geometric dynamic growth, and opt-in observability — and adds the Milestone 7 polish: the published Doxygen API site (M7.1), the expanded usage / performance / compatibility README (M7.2), `find_package` install + pkg-config packaging (M7.4), and the patterns-catalogue (M7.5) and specification-compliance (M7.6, [ADR-0029](docs/adr/0029-spec-compliance-acceptance-audit.md)) acceptance audits. All fifteen Spec Coverage Map rows are ✅, re-verified end-to-end. Twenty-nine ADRs (0001–0029) record every decision; all eleven adopted design patterns are Implemented. Release notes for `v1.0.0` live in [`docs/releases/v1.0.0.md`](docs/releases/v1.0.0.md). @@ -205,7 +207,7 @@ Reports for other host × compiler combinations (Linux / GCC, Linux / Clang, mac | 5 | Dynamic Growth Mode | ✅ complete | | 6 | Observability & Decorators | ✅ complete | | 7 | Release & Polish | ✅ complete | -| 8 | i18n & Post-Release Governance | ⏳ next | +| 8 | i18n & Post-Release Governance | ✅ complete | See [`ROADMAP.md`](ROADMAP.md) for the per-task breakdown and the Spec Coverage Map at the bottom (traceability from spec sections to roadmap items). diff --git a/ROADMAP.md b/ROADMAP.md index 44cfa50..3725da7 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -129,7 +129,7 @@ Goal: *post-`v1.0.0`*, stand up a **modular, professional documentation-translat - [x] 8.5 ADR + doc: **post-release maintenance protocol** — `docs/workflow/maintenance.md` defining the patch / minor / major decision tree (SemVer post-1.0), the hotfix-branch + backport workflow, the security-fix handling path, the deprecation policy, and exactly how `version.hpp` / `CHANGELOG.md` / release notes move for a **patch** release (`v1.0.x`) vs. a **milestone minor**. Formalizes the update / fix / patch governance for the maintained-product phase; cross-links ADR-0004 (versioning), ADR-0008 (tag delegation), and §11 of `AGENTS.md`. Done as [ADR-0034](docs/adr/0034-post-release-maintenance-protocol.md) (the decision) + [`docs/workflow/maintenance.md`](docs/workflow/maintenance.md) (the governance doc). The protocol names the **version-protected surface** (C ABI + C++ types + compile-time knobs + the CMake imported target), fixes a **three-question decision tree** (break consumer code → MAJOR; backward-compatible addition / milestone / deprecation → MINOR; fix / docs / packaging / perf with no API change → PATCH; **ambiguous rounds up**), reuses the milestone-close mechanics ([`release.md`](docs/workflow/release.md)) with only the moved `version.hpp` component differing per level, defines the **hotfix path by releasability** (fix on `master` → next PATCH when releasable; else branch from the released tag → PATCH → mandatory forward-port to `master`), a **private-first, `Security`-categorized** security path, and a **deprecate-in-MINOR → window → remove-in-MAJOR** deprecation policy. The agent-vs-human release boundary and tag delegation are unchanged. Five rejected alternatives recorded (ad-hoc per release, trunk-only without hotfix-from-tag, fold into `release.md`, heavyweight release-branch/LTS model, define-security-later). `release.md` gains a reciprocal pointer to `maintenance.md`. Documentation-only — no code change. - [x] 8.6 **Agent-runnable consistency lint** + ADR: a dependency-free checker (portable runner under `tools/`, wired into a CI job — extends the existing `docs.yml` ADR-sanity checks) asserting the project is internally congruent after any change — version constants in lockstep across `version.hpp` / `CHANGELOG.md` / README badge / latest `docs/releases/*.md`; every ADR indexed and reciprocally linked; every catalogued pattern has both an ADR **and** a live code location; the Spec Coverage Map has no dangling rows; the i18n manifest (§8.2) has no entry staler than its English source; and `ROADMAP.md` checkbox state is internally consistent. Exits non-zero with an actionable report. The ADR records the check catalogue and the "post-release congruence" contract. Implemented as [ADR-0035](docs/adr/0035-agent-runnable-consistency-lint.md) + [`tools/consistency_lint.py`](tools/consistency_lint.py) (Python 3 **standard-library only** — dependency-free in the spec §3.3 sense applied to tooling; runnable as `python tools/consistency_lint.py`) + a new **`consistency` job** in [`docs.yml`](.github/workflows/docs.yml) (full-history checkout for the git-based freshness check). The six checks: (1) version lockstep across `version.hpp` / CHANGELOG / README badge / newest release notes; (2) ADR index ↔ file bijection + sequential numbering; (3) every Adopted pattern row cites an existing ADR **and** an existing `src/main/cpp/` path; (4) Spec Coverage Map has no dangling row (valid glyph + non-empty items cell); (5) no `translated` i18n manifest row is staler than its English source (`git log ..HEAD -- ` empty); (6) README milestone-complete state agrees with ROADMAP checkboxes + no malformed checkbox. It runs all checks then reports every failure and exits non-zero. Validated locally (passes on the consistent tree; a negative test confirmed it catches a deliberately-broken version badge). Five rejected alternatives recorded (pure-bash, no-lint, third-party framework, pre-commit-hook-only, symbol-level pattern check). Wiring the lint into the agent contract (pre-PR checklist) is §8.7. - [x] 8.7 Wire the §8.6 lint into the agent contract: a **post-release congruence checklist** added to `AGENTS.md` (and surfaced as a checkbox in the PR template) — run the lint before drafting any post-1.0 PR — plus the mapping from each failing check to its remediation in the §8.5 maintenance protocol. Done: [`AGENTS.md`](AGENTS.md) §6.4 gains a **mandatory post-release congruence check** (run `python tools/consistency_lint.py` and make it pass before drafting any post-`v1.0.0` PR, pointing at the failure→remediation map); the [PR template](.github/PULL_REQUEST_TEMPLATE.md) gains a *Documentation Impact* checkbox for it; and [`docs/workflow/maintenance.md`](docs/workflow/maintenance.md) gains a **failure → remediation table** mapping each of the six lint checks (`version-lockstep`, `adr-index`, `patterns`, `spec-map`, `i18n-freshness`, `milestones`) to exactly how to fix it. CI still re-runs the lint (the `consistency` job, M8.6); this item makes "run it first, locally" a contract obligation. Documentation-only — no code change. -- [ ] 8.8 **Close Milestone 8 → `v1.1.0`**: bump `version.hpp` (`MINOR=1`), roll `CHANGELOG.md` `Unreleased` into a `[1.1.0]` block, draft `docs/releases/v1.1.0.md`, refresh the README status block / badge / milestone table, and open the release PR (ADR-0004 §2). First post-1.0 minor — the §8.5 protocol governs from here on. +- [x] 8.8 **Close Milestone 8 → `v1.1.0`**: bump `version.hpp` (`MINOR=1`), roll `CHANGELOG.md` `Unreleased` into a `[1.1.0]` block, draft `docs/releases/v1.1.0.md`, refresh the README status block / badge / milestone table, and open the release PR (ADR-0004 §2). First post-1.0 minor — the §8.5 protocol governs from here on. [`version.hpp`](src/main/cpp/it/d4np/memorypool/version.hpp) is bumped to `MAJOR=1 MINOR=1 PATCH=0` and `PBR_MEMORY_POOL_VERSION_STRING` to `"1.1.0"`; the `pool_smoke` version-check `TEST_CASE` asserts the new components. [`CHANGELOG.md`](CHANGELOG.md) `[Unreleased]` is rolled into a sealed `## [1.1.0] — 2026-06-14` block (the M8.1–M8.7 + M8.9 subsections under a Milestone 8 headline; first post-1.0 MINOR, purely additive docs/governance — library binary unchanged); fresh empty `[Unreleased]`; bottom link references rewritten (`[Unreleased]` → `compare/v1.1.0...HEAD`, new `[1.1.0]` → `releases/tag/v1.1.0`). [`docs/releases/v1.1.0.md`](docs/releases/v1.1.0.md) carries the human-prose release notes for `release.yml`. [`README.md`](README.md) status badge (`v1.0.1` → `v1.1.0`), status paragraph, and milestone table (Milestone 8 `⏳ next` → `✅ complete`) are refreshed. The closing release classified as a **MINOR** per the M8.5 decision tree (additive surface, no API/ABI/behaviour change). The maintainer reviews and merges this PR, then the agent tags `v1.1.0` from `master` per [ADR-0008](docs/adr/0008-delegate-tag-creation-and-push-to-the-agent.md), and the maintainer clicks *Publish* on the draft GitHub Release. **This closes Milestone 8 and the planned roadmap.** - [x] 8.9 *(Emerged mid-M8, prerequisite for §8.3/§8.4)* Establish **English as the specification's normative language**. The spec [`docs/specs/01_spec_cpp_memory_pool.md`](docs/specs/01_spec_cpp_memory_pool.md) was authored in Italian (the original contract); [ADR-0032](docs/adr/0032-documentation-i18n-architecture.md) assumes a single English-normative source and `AGENTS.md` §2 mandates English for on-disk artifacts, so the spec cannot be coherently localized (the "English is normative" banner) while its source is Italian. Decided in [ADR-0033](docs/adr/0033-english-as-the-spec-normative-language.md): the spec is translated to English **in place** as the normative source — a **faithful** translation (every requirement, the API, the Free List description, the diagram, and the verification strategy preserved with identical meaning; only the prose language changes, so the frozen contract is not semantically altered), with the Italian original preserved in git history (commit `3ccff68`). Three alternatives rejected (keep Italian + translate per-language, add `it` as an i18n target, dual-language file). This unblocks the §8.3 / §8.4 spec translations from a clean English source. `documentation.md` gains a "spec is maintained in English" note. --- @@ -168,6 +168,17 @@ When a roadmap item flips from ⏳ to ✅, update the corresponding cell(s) in t > Living, dated note describing where the project stands at the end of the most recent work session. Updated at the close of each session so the next session resumes from a known point without re-reading the full PR history. Latest entry first; older entries are kept for trail. +### 2026-06-14 — End of M8 release session (v1.1.0) — planned roadmap complete + +- **Done in this session** — the whole of Milestone 8 plus two patch/normalization items: 8.1 (ADR-0032 i18n architecture), 8.2 (i18n scaffold), 8.3 (`zh-Hans` translation — spec / patterns / README, page-by-page), 8.4 (`ja` translation, same), 8.5 (ADR-0034 + `maintenance.md` post-release protocol), 8.6 (ADR-0035 + `tools/consistency_lint.py` + the `consistency` CI job), 8.7 (lint wired into `AGENTS.md` + PR template + remediation map), 8.9 (ADR-0033 — spec translated to English in place as the normative source), and 8.8 (this release PR — bump to `1.1.0`, roll `CHANGELOG.md` into `[1.1.0] — 2026-06-14`, add `docs/releases/v1.1.0.md`, refresh README). Also this session: `v1.0.1` packaging patch (vcpkg + Conan, M7.8/M7.9) tagged, and an English-normalization sweep of residual Italian spec quotations across the ROADMAP + six ADRs. +- **Library state on `master`** — the `v1.0.x` surface, **unchanged** (Milestone 8 is additive docs/governance; the static archive is byte-identical). New non-code surface: `docs/i18n/{zh-Hans,ja}/` covering README + spec + patterns overview with a commit-pinned manifest + glossary; `docs/workflow/maintenance.md`; `tools/consistency_lint.py` + its `docs.yml` job. The spec is now English-normative. +- **ADRs accepted to date** — 0001–0035. Total: **35** (Milestone 8 added 0032–0035). +- **Patterns catalogue** — unchanged: eleven Implemented; no new pattern in M8. +- **Spec Coverage Map** — unchanged: fifteen rows ✅ (M8 is additive; no spec row maps to it). +- **Versions** — `v1.0.0` (stable), `v1.0.1` (packaging patch) tagged & released; `v1.1.0` is this release PR (first post-1.0 MINOR). +- **Open issues / follow-ups** — none blocking. Noted small follow-ups: add a `SECURITY.md` (referenced by the maintenance protocol); bump CI action versions off the deprecated Node.js 20; optional vcpkg/Conan CI smoke jobs. After this PR merges, the agent tags `v1.1.0` from `master` (ADR-0008) and the maintainer clicks *Publish*. +- **Resume the next session with** — the planned roadmap (Milestones 0–8) is **complete**. Future work is maintained-product governance per [`docs/workflow/maintenance.md`](docs/workflow/maintenance.md): fixes as PATCH releases, additive features as MINOR, and the noted follow-ups above. + ### 2026-06-14 — Packaging patch release (v1.0.1) - A maintenance **`PATCH`** cut by the maintainer's request, immediately after M7.9 merged: it bundles the M7.8 vcpkg port + M7.9 Conan recipe (the post-1.0 packaging additions) into a tagged release. **Chosen as `1.0.1`, not `1.1.0`,** because the shipped library is byte-identical to `v1.0.0` (only repository-side packaging metadata was added) and to keep the Milestone 8 close targeted at `v1.1.0`. `version.hpp` → `1.0.1`, `pool_smoke` asserts updated, `CHANGELOG.md` `[Unreleased]` rolled into `## [1.0.1] — 2026-06-14`, `docs/releases/v1.0.1.md` added, README badge/status refreshed. Not a numbered roadmap item — an ad-hoc patch release. After merge: agent tags `v1.0.1`, maintainer publishes. Next: Milestone 8 (i18n & governance → `v1.1.0`). diff --git a/docs/i18n/translation-status.md b/docs/i18n/translation-status.md index 2f0107a..bba7512 100644 --- a/docs/i18n/translation-status.md +++ b/docs/i18n/translation-status.md @@ -16,7 +16,7 @@ Status vocabulary: | Source page | Source commit | Translated at | Status | Reviewer | |-------------|:-------------:|:-------------:|:------:|----------| -| [`README.md`](../../README.md) | `a01d4f4` | `a01d4f4` | `translated` | — | +| [`README.md`](../../README.md) | `a01d4f4` | `a01d4f4` | `stale` | — | | [`docs/specs/01_spec_cpp_memory_pool.md`](../specs/01_spec_cpp_memory_pool.md) | `2e55dfa` | `2e55dfa` | `translated` | — | | [`docs/patterns/README.md`](../patterns/README.md) | `524f0cc` | `524f0cc` | `translated` | — | @@ -24,7 +24,7 @@ Status vocabulary: | Source page | Source commit | Translated at | Status | Reviewer | |-------------|:-------------:|:-------------:|:------:|----------| -| [`README.md`](../../README.md) | `be70cf8` | `be70cf8` | `translated` | — | +| [`README.md`](../../README.md) | `be70cf8` | `be70cf8` | `stale` | — | | [`docs/specs/01_spec_cpp_memory_pool.md`](../specs/01_spec_cpp_memory_pool.md) | `612f9d2` | `612f9d2` | `translated` | — | | [`docs/patterns/README.md`](../patterns/README.md) | `6c6aeb7` | `6c6aeb7` | `translated` | — | diff --git a/docs/releases/v1.1.0.md b/docs/releases/v1.1.0.md new file mode 100644 index 0000000..43c7e5e --- /dev/null +++ b/docs/releases/v1.1.0.md @@ -0,0 +1,61 @@ +# pbr-cpp-memory-pool v1.1.0 — Milestone 8: Internationalization & Post-Release Governance + +The first post-1.0 **MINOR**. `v1.1.0` is **purely additive documentation and governance** — the shipped library is unchanged from `v1.0.x` (no API, ABI, or behaviour change), so every existing consumer is unaffected. It opens the maintained-product phase: documentation translations, post-release governance, and an automated congruence check. + +## What's in the box + +### Documentation translations ([ADR-0032](../adr/0032-documentation-i18n-architecture.md)) + +A file-based, **zero-external-dependency** translation system under [`docs/i18n/`](../../docs/i18n/). **English stays the single normative source**; translations are a convenience layer with an explicit English fallback. Both target languages — **Simplified Chinese (`zh-Hans`)** and **Japanese (`ja`)** — now cover the full translatable surface: the README, the specification, and the patterns-catalogue overview, each at a 1:1 mirrored path with an "English is normative" banner pinned to the source commit it was translated from. + +- A commit-pinned [`translation-status.md`](../../docs/i18n/translation-status.md) manifest makes staleness machine-detectable. +- A [`glossary.md`](../../docs/i18n/glossary.md) fixes canonical ↔ `zh-Hans` ↔ `ja` terminology (with explicit *keep in English* entries for `free list`, `RAII`, `Pimpl`, the GoF pattern names, etc.). + +### The spec is now English-normative ([ADR-0033](../adr/0033-english-as-the-spec-normative-language.md)) + +The specification — originally authored in Italian — was translated to English **in place** as the single normative source (a faithful translation; requirements unchanged), so the whole repository is uniformly English (AGENTS.md §2) and the spec can be localized coherently like the rest of the surface. + +### Post-release maintenance protocol ([ADR-0034](../adr/0034-post-release-maintenance-protocol.md)) + +[`docs/workflow/maintenance.md`](../../docs/workflow/maintenance.md) governs the maintained-product phase: the version-protected surface, a patch/minor/major **decision tree** (ambiguous rounds up), per-level version/CHANGELOG/release-notes mechanics, the **hotfix-by-releasability** + backport path, a private-first `Security`-categorized fix path, and a deprecate-in-MINOR → window → remove-in-MAJOR deprecation policy. The agent-vs-human release boundary is unchanged. + +### Agent-runnable consistency lint ([ADR-0035](../adr/0035-agent-runnable-consistency-lint.md)) + +[`tools/consistency_lint.py`](../../tools/consistency_lint.py) — a dependency-free (Python 3 stdlib only) checker that asserts cross-artifact congruence and exits non-zero with an actionable report. Six checks: version lockstep, ADR index ↔ files, every catalogued pattern backed by an ADR + code location, no dangling Spec Coverage Map row, no stale i18n translation, and README ↔ ROADMAP milestone agreement. It runs as a CI gate (the `consistency` job in `docs.yml`) and is wired into the agent contract as a mandatory pre-PR check (AGENTS.md §6.4 + the PR template), with a failure → remediation map in the maintenance protocol. + +```bash +python tools/consistency_lint.py # run it locally before drafting a PR +``` + +## Architecture Decision Records + +Four ADRs accepted in Milestone 8, taking the running total from 31 to **35**: + +- [ADR-0032](../adr/0032-documentation-i18n-architecture.md) — documentation i18n architecture. +- [ADR-0033](../adr/0033-english-as-the-spec-normative-language.md) — English as the specification's normative language. +- [ADR-0034](../adr/0034-post-release-maintenance-protocol.md) — post-release maintenance protocol. +- [ADR-0035](../adr/0035-agent-runnable-consistency-lint.md) — agent-runnable consistency lint. + +## Spec Coverage Map + +**No change** — Milestone 8 is additive documentation and governance, not a spec requirement. All fifteen rows remain ✅ (accepted at `v1.0.0`, [ADR-0029](../adr/0029-spec-compliance-acceptance-audit.md)). + +## What this release does **not** contain + +- **No library code change** — the static archive is unchanged from `v1.0.1`; this is a docs/governance MINOR. +- Localization of the ADRs / `CHANGELOG` / `ROADMAP` (English-only by design — ADR-0032 §2), a third translation language, and a `SECURITY.md` (a noted follow-up) are out of scope. + +## Verifying the release + +Each platform tarball is the same complete `cmake --install` tree as `v1.0.x` (full headers + static archive + CMake package config + pkg-config `.pc`). SHA-256 checksums are in `SHA256SUMS`: + +```bash +sha256sum --check SHA256SUMS +``` + +## Links + +- Changelog entry: [`CHANGELOG.md` — `[1.1.0]`](../../CHANGELOG.md#110--2026-06-14) +- Milestone plan: [`ROADMAP.md` — Milestone 8](../../ROADMAP.md#milestone-8--internationalization--post-release-governance) +- Maintenance protocol: [`docs/workflow/maintenance.md`](../../docs/workflow/maintenance.md) +- Previous release: [`docs/releases/v1.0.1.md`](v1.0.1.md) diff --git a/src/main/cpp/it/d4np/memorypool/version.hpp b/src/main/cpp/it/d4np/memorypool/version.hpp index c71e12a..6654370 100644 --- a/src/main/cpp/it/d4np/memorypool/version.hpp +++ b/src/main/cpp/it/d4np/memorypool/version.hpp @@ -20,13 +20,13 @@ namespace it::d4np::memorypool { inline constexpr unsigned PBR_MEMORY_POOL_VERSION_MAJOR = 1; /** Minor version component (incremented with each closed milestone pre-1.0). */ -inline constexpr unsigned PBR_MEMORY_POOL_VERSION_MINOR = 0; +inline constexpr unsigned PBR_MEMORY_POOL_VERSION_MINOR = 1; /** Patch version component (incremented for hotfixes between milestones). */ -inline constexpr unsigned PBR_MEMORY_POOL_VERSION_PATCH = 1; +inline constexpr unsigned PBR_MEMORY_POOL_VERSION_PATCH = 0; /** Pre-formatted version string, kept in lockstep with the components above. */ -inline constexpr const char* PBR_MEMORY_POOL_VERSION_STRING = "1.0.1"; +inline constexpr const char* PBR_MEMORY_POOL_VERSION_STRING = "1.1.0"; } // namespace it::d4np::memorypool diff --git a/src/test/cpp/it/d4np/memorypool/pool_smoke_test.cpp b/src/test/cpp/it/d4np/memorypool/pool_smoke_test.cpp index d9fd1fd..3f69fd6 100644 --- a/src/test/cpp/it/d4np/memorypool/pool_smoke_test.cpp +++ b/src/test/cpp/it/d4np/memorypool/pool_smoke_test.cpp @@ -56,12 +56,12 @@ TEST_CASE("version constants are consistent with the project version") { const std::string_view ver{mem::PBR_MEMORY_POOL_VERSION_STRING}; CHECK(ver.find('.') != std::string_view::npos); - // v1.0.1 — a packaging-only patch over the frozen v1.0.0 API (the vcpkg - // port + Conan recipe, M7.8/M7.9). The library binary is unchanged; only - // these constants move, in lockstep with version.hpp. + // v1.1.0 — Milestone 8 (i18n & post-release governance), the first post-1.0 + // MINOR. Additive only: documentation translations + governance tooling; the + // library binary is unchanged. These constants move in lockstep with version.hpp. CHECK(mem::PBR_MEMORY_POOL_VERSION_MAJOR == 1U); - CHECK(mem::PBR_MEMORY_POOL_VERSION_MINOR == 0U); - CHECK(mem::PBR_MEMORY_POOL_VERSION_PATCH == 1U); + CHECK(mem::PBR_MEMORY_POOL_VERSION_MINOR == 1U); + CHECK(mem::PBR_MEMORY_POOL_VERSION_PATCH == 0U); } TEST_CASE("memory_pool_create / _destroy round-trip on valid arguments") {