From 18a77d750df3a1efd11254cbfc53f4680addde03 Mon Sep 17 00:00:00 2001 From: Mark Beacom Date: Sat, 10 Oct 2026 20:31:52 -0400 Subject: [PATCH] chore(release): prepare v0.20.0 Bumps the lockstep packages (core, evaluator, cli, mcp) to 0.20.0, with CLI_VERSION, SERVER_INFO, both server.json versions, the four bun.lock version fields, the pinned badges CLI, and the current-release narrative. The [0.20.0] CHANGELOG section covers the read-only REST server in the OCI image (ADR-0055), the portal on adrkit.dev and the portal Action's datetime as-of, icon, and server path hint, the qualified-reference lint/evaluator change (ADR-0059 clause 5, which amends ADR-0031 clause 5 and can lower an exit code), the repo-qualified matcher advisory, core's new public exports (todayUtcDate and the explain/lint/new formatters, byte-identical output), and the SDK gates closed while the SDK stays unpublished. ADR-0030 action item 6 records mbeacom/adrkit-backstage. Signed-off-by: Mark Beacom --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 +- AGENTS.md | 4 +- CHANGELOG.md | 186 +++++++++++------- README.md | 9 +- bun.lock | 8 +- docs/RELEASING.md | 6 +- ...dependency-tree-outside-this-repository.md | 5 +- package.json | 2 +- packages/cli/package.json | 2 +- packages/cli/src/index.ts | 2 +- packages/cli/test/color.test.ts | 2 +- packages/core/package.json | 2 +- packages/evaluator/package.json | 2 +- packages/mcp/package.json | 2 +- packages/mcp/server.json | 4 +- packages/mcp/src/server.ts | 2 +- site/src/components/Hero.astro | 2 +- site/src/content/docs/badges.mdx | 4 +- site/src/content/docs/ci.mdx | 10 +- site/src/content/docs/index.mdx | 2 +- site/src/content/docs/quickstart.mdx | 2 +- 21 files changed, 150 insertions(+), 110 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 10681c61..3ec6298b 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -31,7 +31,7 @@ body: attributes: label: adrkit version description: Output of `adr --version` (or the package version you installed). - placeholder: '0.19.0' + placeholder: '0.20.0' validations: required: true - type: dropdown diff --git a/AGENTS.md b/AGENTS.md index d5f1e898..18ad6fb4 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,14 +2,14 @@ Decision memory for human- and agent-authored plans — machine-readable ADRs that are enforceable in CI and legible to agents, without leaving git. -Status: early — phases 0–6 landed and v0.19.0 is public. `@adrkit/core`, +Status: early — phases 0–6 landed and v0.20.0 is public. `@adrkit/core`, `@adrkit/evaluator`, `@adrkit/cli` (`lint`, `new`, `graph`, `explain`, `check`, `queue`, `accept`, `approve`, `object`, `resolve`, `migrate --from madr`, `evaluate`) are published on npm, as is the independently versioned `@adrkit/spec-kit` Spec Kit extension (0.1.5); the repository-backed CI Action is available at `mbeacom/adrkit/packages/ci@v0`, and the build-only decision-portal Action at -`mbeacom/adrkit/packages/ci/portal@v0.19.0` (pin an immutable tag, never `@v0`). +`mbeacom/adrkit/packages/ci/portal@v0.20.0` (pin an immutable tag, never `@v0`). The governing-decisions Action also has a root `action.yml` alias for GitHub Marketplace beginning with v0.13.0. Root Marketplace guidance uses immutable release tags; never advertise diff --git a/CHANGELOG.md b/CHANGELOG.md index 7143008d..618fbd19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,21 +9,77 @@ Until `1.0.0`, minor releases may include breaking changes ## [Unreleased] -### Changed - -- **The adrkit.dev site builds on Starlight 0.42.** Every 0.42 bump had failed - `astro build` with `Cannot find native binding`: under the site's isolated - linker (ADR-0010) Vite could not resolve Starlight's `satteri` from the site - root, so it inlined the napi loader into the prerender bundle, where the - platform binding could not be found. The site now lists `satteri` as a direct - dependency so Vite keeps it external, with no hoisting and no linker change, - and Dependabot updates it together with Starlight - ([#224](https://github.com/mbeacom/adrkit/issues/224)). The site also picks up - Starlight 0.42's reworked mobile menu, which is meant to open without - JavaScript. +## [0.20.0] - 2026-10-10 + +This release adds a read-only REST server to the OCI image: +`adrkit-container server` (the image's `server` selector) serves the records, +graph, review queue, issues, and path governance of one or more corpora, and the +decision portal, over `GET` and `HEAD` only +([ADR-0055](docs/adr/0055-serve-a-read-only-rest-api-over-the-sdk-in-the-oci-image-and-reach-mcp-clients-t.md)). +It authenticates no one: run it on localhost or behind a gateway that +authenticates every request. adrkit.dev now serves this repository's own +decision portal at [`/decisions/`](https://adrkit.dev/decisions/), and the +decision-portal Action, `mbeacom/adrkit/packages/ci/portal@v0.20.0`, accepts an +ISO datetime with an explicit timezone as `as-of`. The portal page ships its own +tab icon and, when the REST server hosts it, names the server's +`governing?path=` route. On +npm, `@adrkit/core`, `@adrkit/evaluator`, `@adrkit/cli`, and `@adrkit/mcp` move +to 0.20.0. + +**One CLI JSON contract change is not additive, and it can change an exit code.** `adr lint` now +reports a log-qualified `relatesTo` or `conflictsWith` (such as +`payments:0012`) as `federated-ref-unresolved` at `info` instead of +`dangling-relatesTo` (`error`) or `dangling-conflictsWith` (`warn`), so a corpus +whose only error was a qualified `relatesTo` moves from exit `1` to `0` under +`adr lint` and `adr explain`. That is +[ADR-0059](docs/adr/0059-aggregate-decision-corpora-across-an-organization-s-repositories-as-a-pinned-rea.md) +clause 5, which amends +[ADR-0031](docs/adr/0031-publish-a-narrow-consumer-sdk-as-the-contract-and-document-the-cli-json-as-its-s.md) +clause 5's additive-only CLI JSON contract for exactly this case; a +log-qualified `supersedes` or `supersededBy` stays an error, and `adr evaluate` +now fails a qualified `supersedes` too. Separately, a `repo`-qualified `affects` matcher that cannot +apply in a single-repository corpus is reported as an `info` finding, +`affects-repo-not-applicable`, instead of being skipped silently +([#300](https://github.com/mbeacom/adrkit/issues/300)); it changes no exit code. + +`@adrkit/core` gains public exports: `todayUtcDate()`, the `--as-of` default +the CLI, the queue Action, and the SDK now share; the `adr explain`, `adr lint`, +and `adr new` JSON builders and formatters, whose output is byte-identical to +the CLI's before; and the repository-qualifier validator. Its unused `log` input on `resolveAffects` and `checkChanges` is +replaced by `member: { log, repo }`. `@adrkit/sdk` closes the publication +gates this release could close (ADR-0031 action items 4, 5, 6, and 8; ADR-0053 +action items 3, 5, and 8), and it is still not published: there is no npm +package, and ADR-0053 action item 9 and a publication record come first. +Dependency bumps that touch only the documentation site (#313) and +maintainer-only publishing notes (#306) are not listed. ### Added +- **A read-only REST server in the OCI image, `adrkit-container server`.** + This server authenticates no one: run it on localhost or behind a gateway + that authenticates every request. It serves `GET` and `HEAD` only, under + `/api/v1/corpora/{corpus}`: `records`, `records/{id}`, `graph?kinds=`, + `queue?asOf=`, `issues`, and `governing?path=`, plus `/api/v1/corpora`, + `/openapi.json`, `/healthz`, and the decision portal at `/` + ([ADR-0055](docs/adr/0055-serve-a-read-only-rest-api-over-the-sdk-in-the-oci-image-and-reach-mcp-clients-t.md)). + Every answer is `{ corpus, commit, data }`, with the commit read from the + `.adrkit-corpus.json` file the populator writes next to the records; a corpus + without one is not served. Configure it with `ADRKIT_SERVER_CORPORA` + (`key[=dir],...` or a JSON object), `ADRKIT_SERVER_ROOT`, + `ADRKIT_SERVER_HOST` (default `127.0.0.1`), and `ADRKIT_SERVER_PORT` + (default `8080`); see [Container usage](README.md#the-read-only-rest-server). + It runs no `git`, spawns no process, and opens no outbound connection. + `governing` matches `affects` only: it never reads the file at the path, so + it has no `@adr` marker evidence. +- **The server-hosted decision portal points at the server's own + `governing?path=` route** ([#315](https://github.com/mbeacom/adrkit/issues/315), + ADR-0055 clause 9). The governance-by-path view still says this host has no + path table, and now names the route, relative to the page, with an example + such as `../../api/v1/corpora/demo/governing?path=src/index.ts`. The page + shows it as text and never requests it, so the renderer, its CSP, and the + GitHub Pages host are unchanged. `portal-data.json` grows one additive + top-level field, `pathLookup` (`{ route }` or `null`); `version` stays `"1"`, + and a Pages bundle carries `"pathLookup": null`. - adrkit.dev serves this repository's own decision portal at [`/decisions/`](https://adrkit.dev/decisions/), built on every site deploy by the nested portal Action from the same checkout, and linked from the @@ -33,6 +89,38 @@ Until `1.0.0`, minor releases may include breaking changes would break under a subpath ([ADR-0054](docs/adr/0054-publish-a-static-decision-portal-for-github-pages-built-outside-the-cli-from-the.md) action item 8, #294). +- **`@adrkit/core` exports `todayUtcDate()`, the `--as-of` default.** When + `--as-of` is absent, `adr queue`, the queue Action, and `adr new` now take + today's UTC date from this one function instead of three inline copies. So + does the unpublished `@adrkit/sdk`, and the decision-portal Action now takes + its default from the SDK rather than computing a fifth copy. +- **The decision-portal Action's `as-of` accepts an ISO datetime with an + explicit timezone**, as `adr queue --as-of` does, and resolves it to the UTC + calendar date. A timezone-less datetime is still refused. Underneath, the + unpublished `@adrkit/sdk`'s `queue({ asOf })` takes the same grammar and + echoes the resolved date. A library consumer can now default the + queue exactly as CI does, instead of risking a local-date default that + disagrees near midnight + ([ADR-0031](docs/adr/0031-publish-a-narrow-consumer-sdk-as-the-contract-and-document-the-cli-json-as-its-s.md) + action item 8). No output changes. +- **`@adrkit/core` owns the `adr explain`, `adr lint`, and `adr new` JSON + shapes.** `buildExplainReport`/`formatExplainReportJson`, + `buildLintReport`/`formatLintReportJson`, and + `buildNewAdrReport`/`formatNewAdrReportJson` join `formatQueueReportJson` and + `renderJsonGraph`, and the CLI prints their output (ADR-0031 action item 4). + The bytes are unchanged, which goldens captured before the change pin. +- **A conformance fixture for the CLI JSON contract.** A fixed corpus with + golden `adr queue --format json` and `adr check --json` output, at + `packages/core/test/conformance/golden/`. The CLI and `@adrkit/sdk` are + tested against it, and a downstream repository can run its `manifest.json` + against the `adr` it pins + ([ADR-0030](docs/adr/0030-keep-extension-surfaces-that-carry-a-dependency-tree-outside-this-repository.md) + clause 5). +- **`docs/RELEASING.md` documents the two consumer contracts**: the + `@adrkit/sdk` surface (still unpublished) and the CLI JSON, each with the + additive-only obligation stated (ADR-0031 action item 5). + +### Changed - **Behavior change: `adr lint` no longer fails on a log-qualified `relatesTo` or `conflictsWith`.** A reference such as `relatesTo: ["payments:0012"]` names @@ -62,33 +150,16 @@ Until `1.0.0`, minor releases may include breaking changes supplied (before, it was inert without a snapshot and passed when the snapshot listed the id), and a log-qualified `supersededBy` names clause 4 in its existing failure. - -- **A read-only REST server in the OCI image, `adrkit-container server`.** - This server authenticates no one: run it on localhost or behind a gateway - that authenticates every request. It serves `GET` and `HEAD` only, under - `/api/v1/corpora/{corpus}`: `records`, `records/{id}`, `graph?kinds=`, - `queue?asOf=`, `issues`, and `governing?path=`, plus `/api/v1/corpora`, - `/openapi.json`, `/healthz`, and the decision portal at `/` - ([ADR-0055](docs/adr/0055-serve-a-read-only-rest-api-over-the-sdk-in-the-oci-image-and-reach-mcp-clients-t.md)). - Every answer is `{ corpus, commit, data }`, with the commit read from the - `.adrkit-corpus.json` file the populator writes next to the records; a corpus - without one is not served. Configure it with `ADRKIT_SERVER_CORPORA` - (`key[=dir],...` or a JSON object), `ADRKIT_SERVER_ROOT`, - `ADRKIT_SERVER_HOST` (default `127.0.0.1`), and `ADRKIT_SERVER_PORT` - (default `8080`); see [Container usage](README.md#the-read-only-rest-server). - It runs no `git`, spawns no process, and opens no outbound connection. - `governing` matches `affects` only: it never reads the file at the path, so - it has no `@adr` marker evidence. - -- **The server-hosted decision portal points at the server's own - `governing?path=` route** ([#315](https://github.com/mbeacom/adrkit/issues/315), - ADR-0055 clause 9). The governance-by-path view still says this host has no - path table, and now names the route, relative to the page, with an example - such as `../../api/v1/corpora/demo/governing?path=src/index.ts`. The page - shows it as text and never requests it, so the renderer, its CSP, and the - GitHub Pages host are unchanged. `portal-data.json` grows one additive - top-level field, `pathLookup` (`{ route }` or `null`); `version` stays `"1"`, - and a Pages bundle carries `"pathLookup": null`. +- **The adrkit.dev site builds on Starlight 0.42.** Every 0.42 bump had failed + `astro build` with `Cannot find native binding`: under the site's isolated + linker (ADR-0010) Vite could not resolve Starlight's `satteri` from the site + root, so it inlined the napi loader into the prerender bundle, where the + platform binding could not be found. The site now lists `satteri` as a direct + dependency so Vite keeps it external, with no hoisting and no linker change, + and Dependabot updates it together with Starlight + ([#224](https://github.com/mbeacom/adrkit/issues/224)). The site also picks up + Starlight 0.42's reworked mobile menu, which is meant to open without + JavaScript. ### Fixed @@ -109,7 +180,6 @@ Until `1.0.0`, minor releases may include breaking changes is replaced by an explicit `member: { log, repo }` identity, and `matcherAppliesToMember` applies a qualified matcher when it equals either name. No surface passes a member yet; that is ADR-0059's federation work. - - **The decision portal ships its own tab icon** ([#309](https://github.com/mbeacom/adrkit/issues/309)). Without one, every load also requested `/favicon.ico` at the host root and logged a 404 on a @@ -120,39 +190,6 @@ Until `1.0.0`, minor releases may include breaking changes `/portal/{corpus}/page/icon.svg` as `image/svg+xml` (operation `getPortalIcon`). -### Added - -- **`@adrkit/core` exports `todayUtcDate()`, the `--as-of` default.** When - `--as-of` is absent, `adr queue`, the queue Action, and `adr new` now take - today's UTC date from this one function instead of three inline copies. So - does the unpublished `@adrkit/sdk`, and the decision-portal Action now takes - its default from the SDK rather than computing a fifth copy. -- **The decision-portal Action's `as-of` accepts an ISO datetime with an - explicit timezone**, as `adr queue --as-of` does, and resolves it to the UTC - calendar date. A timezone-less datetime is still refused. Underneath, the - unpublished `@adrkit/sdk`'s `queue({ asOf })` takes the same grammar and - echoes the resolved date. A library consumer can now default the - queue exactly as CI does, instead of risking a local-date default that - disagrees near midnight - ([ADR-0031](docs/adr/0031-publish-a-narrow-consumer-sdk-as-the-contract-and-document-the-cli-json-as-its-s.md) - action item 8). No output changes. -- **`@adrkit/core` owns the `adr explain`, `adr lint`, and `adr new` JSON - shapes.** `buildExplainReport`/`formatExplainReportJson`, - `buildLintReport`/`formatLintReportJson`, and - `buildNewAdrReport`/`formatNewAdrReportJson` join `formatQueueReportJson` and - `renderJsonGraph`, and the CLI prints their output (ADR-0031 action item 4). - The bytes are unchanged, which goldens captured before the change pin. -- **A conformance fixture for the CLI JSON contract.** A fixed corpus with - golden `adr queue --format json` and `adr check --json` output, at - `packages/core/test/conformance/golden/`. The CLI and `@adrkit/sdk` are - tested against it, and a downstream repository can run its `manifest.json` - against the `adr` it pins - ([ADR-0030](docs/adr/0030-keep-extension-surfaces-that-carry-a-dependency-tree-outside-this-repository.md) - clause 5). -- **`docs/RELEASING.md` documents the two consumer contracts**: the - `@adrkit/sdk` surface (still unpublished) and the CLI JSON, each with the - additive-only obligation stated (ADR-0031 action item 5). - ## [0.19.0] - 2026-10-10 This release ships the decision portal: a third, build-only nested Action, @@ -2430,7 +2467,8 @@ against live Spec Kit, rather than reasoning about it: - Node-targeted published distribution of all packages, smoke-tested under Node 22 and 24. -[Unreleased]: https://github.com/mbeacom/adrkit/compare/v0.19.0...HEAD +[Unreleased]: https://github.com/mbeacom/adrkit/compare/v0.20.0...HEAD +[0.20.0]: https://github.com/mbeacom/adrkit/compare/v0.19.0...v0.20.0 [0.19.0]: https://github.com/mbeacom/adrkit/compare/v0.18.0...v0.19.0 [0.18.0]: https://github.com/mbeacom/adrkit/compare/v0.17.0...v0.18.0 [0.17.0]: https://github.com/mbeacom/adrkit/compare/v0.16.0...v0.17.0 diff --git a/README.md b/README.md index 973d3561..97b87282 100644 --- a/README.md +++ b/README.md @@ -465,7 +465,7 @@ answer where the next decision is actually being made. It never approves anything. It routes, and humans decide. The root Marketplace entry point has shipped with every release since -`v0.13.0`. Pin its immutable root reference — currently `v0.19.0` — for the +`v0.13.0`. Pin its immutable root reference — currently `v0.20.0` — for the complete governing-decisions workflow (see [Use in CI](https://adrkit.dev/ci/)): @@ -484,7 +484,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - - uses: mbeacom/adrkit@v0.19.0 + - uses: mbeacom/adrkit@v0.20.0 ``` Existing consumers of the nested form can stay on @@ -531,10 +531,11 @@ table is the short version: | Available now | `@adrkit/core`, `@adrkit/cli`, `@adrkit/evaluator`, `@adrkit/mcp` | Published on npm for Node 22+ | | Available now | `@adrkit/spec-kit` | Published separately for current Spec Kit releases | | Available now | `adr queue`, `adr approve`, `adr object`, `adr resolve`, `adr accept`, and the governing-decisions GitHub Action | Queue reporting, recorded review state, ratification from the queue, and PR comments are part of the shipped workflow | -| Available now | Decision portal Action (`packages/ci/portal`) | Builds a static, read-only portal for GitHub Pages, beginning with `v0.19.0`; the private `@adrkit/portal` generator ships only inside it | +| Available now | Decision portal Action (`packages/ci/portal`) | Builds a static, read-only portal for GitHub Pages, beginning with `v0.19.0`; its `as-of` accepts an ISO datetime with an explicit timezone beginning with `v0.20.0`; the private `@adrkit/portal` generator ships only inside it | +| Available now | Read-only REST server in the OCI image (`adrkit-container server`, the `server` selector) | Serves a read-only REST API and the decision portal over one or more corpora, beginning with `v0.20.0`; it authenticates no one, so run it on localhost or behind an authenticating gateway; the private `@adrkit/server` ships only inside the image | | Available now | `adrkit` agent plugin | Install from this repository or marketplace; shells out to `adr` | | In development | Later evaluator passes | Passes 1–3 and calibration remain design targets; Pass 0 is the implemented evaluator surface | -| In development | `@adrkit/sdk` | Implemented over `@adrkit/core` and used by the portal, but unpublished at `0.0.0`; there is no npm package | +| In development | `@adrkit/sdk` | Implemented over `@adrkit/core` and used by the portal and the REST server, but unpublished at `0.0.0`; there is no npm package | | In development | Catalog packages | `@adrkit/catalog-envelope` and `@adrkit/catalog-backstage` exist in the workspace at `0.0.0` and are not released | | Planned | Additional downstream integrations | Future integrations will build on the current typed corpus and read-only retrieval model | diff --git a/bun.lock b/bun.lock index 3bf6befd..07279c09 100644 --- a/bun.lock +++ b/bun.lock @@ -56,7 +56,7 @@ }, "packages/cli": { "name": "@adrkit/cli", - "version": "0.19.0", + "version": "0.20.0", "bin": { "adr": "./dist/index.js", "adrkit": "./dist/index.js", @@ -71,7 +71,7 @@ }, "packages/core": { "name": "@adrkit/core", - "version": "0.19.0", + "version": "0.20.0", "dependencies": { "picomatch": "^4", "semver": "^7", @@ -86,7 +86,7 @@ }, "packages/evaluator": { "name": "@adrkit/evaluator", - "version": "0.19.0", + "version": "0.20.0", "dependencies": { "@adrkit/core": "workspace:*", "jsonpath-rfc9535": "1.3.0", @@ -97,7 +97,7 @@ }, "packages/mcp": { "name": "@adrkit/mcp", - "version": "0.19.0", + "version": "0.20.0", "bin": { "adrkit-mcp": "./dist/bin.js", }, diff --git a/docs/RELEASING.md b/docs/RELEASING.md index dd0cba25..b34d29df 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -10,8 +10,8 @@ Actions, one Marketplace entry point, and one lockstep OCI image: | `@adrkit/cli` (`adr`, `adrkit`) | npm | | `@adrkit/mcp` (`adrkit-mcp`) | npm | | `action.yml` | GitHub Actions Marketplace and Git tag (governing-decisions alias; available beginning with `v0.13.0`) | -| `packages/ci/action.yml` | Git tag (existing governing-decisions subpath, latest immutable release `v0.19.0`, moving `v0`) | -| `packages/ci/queue/action.yml` | Git tag (nested queue Action, latest immutable release `v0.19.0`, moving `v0`) | +| `packages/ci/action.yml` | Git tag (existing governing-decisions subpath, latest immutable release `v0.20.0`, moving `v0`) | +| `packages/ci/queue/action.yml` | Git tag (nested queue Action, latest immutable release `v0.20.0`, moving `v0`) | | `packages/ci/portal/action.yml` | Git tag (nested, build-only decision-portal Action, ADR-0054; beginning with `v0.19.0`, moving `v0`; document only immutable `vX.Y.Z` pins) | | `ghcr.io/mbeacom/adrkit` | GitHub Container Registry (`vX.Y.Z`, moving `vX`, `latest`; begins with the first release containing ADR-0032) | @@ -25,7 +25,7 @@ and portal Actions intentionally remain nested. Never advertise a root alias or keeps the two governing-decisions metadata contracts identical except for their different bundle paths. -The coordinated lockstep surface is published; the current release is `v0.19.0`. `@adrkit/core`, +The coordinated lockstep surface is published; the current release is `v0.20.0`. `@adrkit/core`, `@adrkit/evaluator`, and `@adrkit/cli` use GitHub Actions Trusted Publishing. `@adrkit/mcp` was created with the isolated one-time bootstrap path below; its Trusted Publisher and token-restriction cleanup must be completed before the diff --git a/docs/adr/0030-keep-extension-surfaces-that-carry-a-dependency-tree-outside-this-repository.md b/docs/adr/0030-keep-extension-surfaces-that-carry-a-dependency-tree-outside-this-repository.md index 2e4a2b80..02793e20 100644 --- a/docs/adr/0030-keep-extension-surfaces-that-carry-a-dependency-tree-outside-this-repository.md +++ b/docs/adr/0030-keep-extension-surfaces-that-carry-a-dependency-tree-outside-this-repository.md @@ -254,5 +254,6 @@ no end condition. The measurement that closes the question now exists. 5. [ ] Build the conformance fixture named in clause 5, so the accepted drift cost has the mitigation this record claims for it. Without it, clause 5 is an intention rather than a control. -6. [ ] When the downstream repository is created, record its location here so this record - names where the surface actually lives. +6. [x] When the downstream repository is created, record its location here so this record + names where the surface actually lives. **Done 2026-10-10: + ** diff --git a/package.json b/package.json index ea93b117..ab99dc55 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "adrkit", - "version": "0.19.0", + "version": "0.20.0", "description": "Decision memory for human and agent-authored plans \u2014 machine-readable, CI-enforceable architecture decision records.", "type": "module", "private": true, diff --git a/packages/cli/package.json b/packages/cli/package.json index bf988024..3bfd92cb 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@adrkit/cli", - "version": "0.19.0", + "version": "0.20.0", "description": "Git-native architecture decision record tooling from adrkit.", "type": "module", "license": "Apache-2.0", diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index c7c186c8..fce85812 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -75,7 +75,7 @@ import { getPresentation, setPresentation, styleUsageBlock, type ColorMode, type * (mirroring `@adrkit/mcp`'s `SERVER_INFO`) so the bundled `dist/index.js` never has * to locate `package.json` at runtime. `version.test.ts` asserts the two agree. */ -export const CLI_VERSION = '0.19.0'; +export const CLI_VERSION = '0.20.0'; function topLevelUsage(style?: StreamStyle): string { return renderTopLevelUsage(CLI_VERSION, style); diff --git a/packages/cli/test/color.test.ts b/packages/cli/test/color.test.ts index 6f44e0f1..b43e1a9b 100644 --- a/packages/cli/test/color.test.ts +++ b/packages/cli/test/color.test.ts @@ -33,7 +33,7 @@ describe('CLI color presentation', () => { expect(result.exitCode).toBe(0); expect(result.stderr).toBe(''); expect(result.stdout).toContain('\u001b['); - expect(result.stdout).toContain('adrkit 0.19.0'); + expect(result.stdout).toContain('adrkit 0.20.0'); }); test('forced color keeps lint stdout and stderr separated', async () => { diff --git a/packages/core/package.json b/packages/core/package.json index 083b0b47..f9b9f52e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@adrkit/core", - "version": "0.19.0", + "version": "0.20.0", "description": "Pure ADR parsing, validation, migration, and affects resolution for adrkit.", "type": "module", "license": "Apache-2.0", diff --git a/packages/evaluator/package.json b/packages/evaluator/package.json index 0b674aff..06367f41 100644 --- a/packages/evaluator/package.json +++ b/packages/evaluator/package.json @@ -1,6 +1,6 @@ { "name": "@adrkit/evaluator", - "version": "0.19.0", + "version": "0.20.0", "description": "Deterministic, model-free ADR proposal evaluation and routing for adrkit.", "type": "module", "license": "Apache-2.0", diff --git a/packages/mcp/package.json b/packages/mcp/package.json index df29594a..1a5cbb24 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -1,7 +1,7 @@ { "name": "@adrkit/mcp", "mcpName": "dev.adrkit/mcp", - "version": "0.19.0", + "version": "0.20.0", "description": "Local, read-only Model Context Protocol server exposing adrkit decision retrieval over stdio.", "type": "module", "license": "Apache-2.0", diff --git a/packages/mcp/server.json b/packages/mcp/server.json index 7b8e4aa1..2f7d38f5 100644 --- a/packages/mcp/server.json +++ b/packages/mcp/server.json @@ -3,7 +3,7 @@ "name": "dev.adrkit/mcp", "title": "adrkit decision memory", "description": "Deterministic, offline, read-only ADR decision memory for coding agents. No model or network calls.", - "version": "0.19.0", + "version": "0.20.0", "websiteUrl": "https://adrkit.dev", "repository": { "url": "https://github.com/mbeacom/adrkit", @@ -15,7 +15,7 @@ "registryType": "npm", "registryBaseUrl": "https://registry.npmjs.org", "identifier": "@adrkit/mcp", - "version": "0.19.0", + "version": "0.20.0", "runtimeHint": "npx", "transport": { "type": "stdio" diff --git a/packages/mcp/src/server.ts b/packages/mcp/src/server.ts index a73c99f6..0fe04d8a 100644 --- a/packages/mcp/src/server.ts +++ b/packages/mcp/src/server.ts @@ -14,7 +14,7 @@ import { registerGetDecisionContext } from './tools/get-decision-context.ts'; import { registerListSuperseded } from './tools/list-superseded.ts'; import type { ToolConfig } from './tools/shared.ts'; -export const SERVER_INFO = { name: '@adrkit/mcp', version: '0.19.0' } as const; +export const SERVER_INFO = { name: '@adrkit/mcp', version: '0.20.0' } as const; /** * The MCP protocol revision this server serves through `serveStdio`'s modern era. diff --git a/site/src/components/Hero.astro b/site/src/components/Hero.astro index 8e758252..cfef586e 100644 --- a/site/src/components/Hero.astro +++ b/site/src/components/Hero.astro @@ -14,7 +14,7 @@ const { title = data.title, tagline, actions = [] } = data.hero || {}; CLI works today - v0.19.0 on npm · decision memory in git + v0.20.0 on npm · decision memory in git

diff --git a/site/src/content/docs/badges.mdx b/site/src/content/docs/badges.mdx index af22936a..9136ce94 100644 --- a/site/src/content/docs/badges.mdx +++ b/site/src/content/docs/badges.mdx @@ -100,8 +100,8 @@ jobs: # current release. - run: | mkdir -p .adrkit - npx @adrkit/cli@0.19.0 queue --format json > .adrkit/queue.json.tmp - npx @adrkit/cli@0.19.0 lint --json > .adrkit/lint.json.tmp + npx @adrkit/cli@0.20.0 queue --format json > .adrkit/queue.json.tmp + npx @adrkit/cli@0.20.0 lint --json > .adrkit/lint.json.tmp # A truncated or malformed write renders as `no result` on the badge, which # reads as a bug in your tooling. Fail here instead of committing it. diff --git a/site/src/content/docs/ci.mdx b/site/src/content/docs/ci.mdx index 0f0e81e4..ca50c011 100644 --- a/site/src/content/docs/ci.mdx +++ b/site/src/content/docs/ci.mdx @@ -50,7 +50,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - - uses: mbeacom/adrkit@v0.19.0 + - uses: mbeacom/adrkit@v0.20.0 # with: # dir: docs/adr # ADR corpus directory (default: docs/adr) # token: ${{ github.token }} @@ -75,7 +75,7 @@ the comment reaches GitHub's size limit. Keep the default checkout rooted at `GITHUB_WORKSPACE`; if a workflow checks out elsewhere, marker health will identify files the Action could not inspect. -The Marketplace form is pinned to the immutable `v0.19.0` release. For +The Marketplace form is pinned to the immutable `v0.20.0` release. For the nested compatibility form, `v0` is a moving major tag; pin an immutable release tag or commit SHA when maximum reproducibility matters. @@ -86,14 +86,14 @@ release tag or commit SHA when maximum reproducibility matters.