From 6ac79434dcca53671e1e6f1ab52a4978da4a6a69 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 8 Oct 2026 14:37:56 +0000 Subject: [PATCH 1/2] docs: changelog section for 3.0.0; version-agnostic install line The Unreleased entries since 2.1.0 become the 3.0.0 section, dated for the release, with a lead that says what the release is (the archive substrate under two consumers, deployed as the retrieval under Ask the Archive) and where the alpha sits. The CONTRACT entry no longer says nothing in it is implemented. The README's install sentence names the package, not the alpha, so the release workflow's metadata sync is the only version bump. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01F2ti456guy1bXVmjA3fBTV --- CHANGELOG.md | 23 +++++++++++++++++------ README.md | 6 +++--- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dc302c6..38ecc31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,12 +5,23 @@ All notable changes to this repository are recorded here. The format follows [Semantic Versioning](https://semver.org/). Releases are cut by the `release` workflow and archived on Zenodo under the concept DOI [10.5281/zenodo.20676773](https://doi.org/10.5281/zenodo.20676773). -`@lukefwalton/answer-engine@3.0.0-alpha.1` is published on npm, with both -`latest` and `next` pointing at it. Later releases publish from Actions. -npm trusts this repository's `release.yml`. +Releases publish to npm from Actions; npm trusts this repository's +`release.yml`. ## [Unreleased] +## [3.0.0] - 2026-10-08 + +The archive substrate. One retrieval contract under two consumers: a +question-answering product that cites or refuses, and a retrieval-only +endpoint (`GET /api/archive/search`, MCP) whose caller brings its own model. +Every fragment carries a disclosure policy resolved before any query; the only +object a consumer may hand to a model or a caller is a hit whose type cannot +hold more than that policy allows. Since 8 October 2026 this is the retrieval +under Ask the Archive (lukefwalton.com/ask), with an unpublished novel served +as a private entity. `paper.md` describes it. Everything below landed between +2.1.0 and this release; `3.0.0-alpha.1` (5 October 2026) was the first publish. + ### Added - `docs/CONTRACT.md`: the archive contract, the design of record for 3.0.0. @@ -21,9 +32,9 @@ npm trusts this repository's `release.yml`. system-generated, author-authorized semantic projections with a build-time lint; provenance (date, version, creators, identifiers, locators) on every hit; a pluggable retrieval core; and the wire contract `archive-search/1` - for a retrieval-only consumer. Documentation only: nothing in it is - implemented, and the 2.x code and the gold suite's semantics remain the - source of truth until 3.0.0 ships. + for a retrieval-only consumer. It landed as documentation first; the + implementation followed in the steps below, and the gold suite's semantics + gated each one. - This changelog. - Step 1 of 3.0.0 (additive; no 2.x behaviour changes): `src/contract.ts` with the contract types; `assertSemanticProjection` and the `LintedGist` brand in diff --git a/README.md b/README.md index aa5d643..4feeabc 100644 --- a/README.md +++ b/README.md @@ -42,9 +42,9 @@ teaching commands (`npm install`, `npm run …`) on the bundled example corpus; or, from 3.0.0, import it (`@lukefwalton/answer-engine`) as the substrate under your own consumer: a question-answering product, or a retrieval-only endpoint whose caller brings its own model. The published package is -[`@lukefwalton/answer-engine@3.0.0-alpha.1`](https://www.npmjs.com/package/@lukefwalton/answer-engine). -`npm install @lukefwalton/answer-engine` installs that alpha: the first -publish set both the `latest` and `next` dist-tags to it. It is deliberately not a +[`@lukefwalton/answer-engine`](https://www.npmjs.com/package/@lukefwalton/answer-engine); +`npm install @lukefwalton/answer-engine` installs the latest release +(`CHANGELOG.md` names it). It is deliberately not a framework, hosted app, chatbot UI, or vector-database starter. It is the smallest useful version of the answer contract: what may travel from each piece of an archive, what must stay behind, how citations are grounded, and From bf098db1668c9b2d938503949b9987e0c401382f Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 8 Oct 2026 14:39:45 +0000 Subject: [PATCH 2/2] docs: the release paragraph names no version either "v3.0.0-alpha.1 is that release ... (the concept DOI resolves to it)" would be false the moment 3.0.0 lands; the sentence now says what holds for every release. The alpha's own history (first publish, CLI upload) stays as history. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01F2ti456guy1bXVmjA3fBTV --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4feeabc..5dc2b19 100644 --- a/README.md +++ b/README.md @@ -450,8 +450,8 @@ and smoke-imports the package, bumps semver via pushes `main` and the new tag atomically, and creates the GitHub release Zenodo archives (pre-releases are marked as such). `CITATION.cff` and `.zenodo.json` both use the concept DOI for citation; Zenodo assigns a -version DOI per release on its own. `v3.0.0-alpha.1` is that release on GitHub, -on Zenodo (the concept DOI resolves to it), and on npm. +version DOI per release on its own. Each release is one object on GitHub, on +Zenodo (the concept DOI resolves to the latest), and on npm. The workflow then publishes to npm with provenance. A pre-release goes under `next`, and a final release goes under `latest`. npm trusts GitHub Actions for